標籤:mysql 雙機熱備 資料庫
卸載系統內建的版本。
這裡以MySQL-5.5.28-1為版本
為了簡單,RPM方式安裝:
rpm -ivh MySQL-server-5.5.28-1.linux2.6.x86_64.rpm
rpm -ivh MySQL-client-5.5.28-1.linux2.6.x86_64.rpm
#mysql
mysql>update mysql.user set password="chengshan" where user="root";//
mysql>delete from mysql.user where user=‘‘;//刪除匿名使用者
mysql>select user,host from mysql.user;
mysql>delete from mysql.user where host=‘127.0.0.1‘;
mysql>delete from mysql.user where host=‘localhost‘;
mysql>create user ‘zcs‘@‘127.0.0.1‘ identified by ‘chengshan‘;
mysql>grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘chengshan‘ with grant option;
mysql>grant all privileges on *.* to ‘zcs‘@‘%‘ identified by ‘chengshan‘ with grant option;
mysql>flush privileges;
mysql>quit
登陸測試
[[email protected] ~]# mysql -u root -p
Enter password:
1.修改相關設定檔:
#cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
#vi /etc/my.cnf
在[client]最後增加
default-character-set=utf8
在[mysqld]最後增加
lower_case_table_names=1
transaction-isolation=READ-COMMITTED
event-scheduler=1
max_connections=2000
2.啟動
/etc/init.d/mysql start
#netstat -anlt
3.停止
/etc/init.d/mysql stop
4.重新啟動
/etc/init.d/mysql restart
5.設定自動啟動
/sbin/chkconfig mysql on
二兩台伺服器都裝好後,進行雙機熱備的配置(主從關係)
約定環境:兩台伺服器的主機名稱最好不一樣,如一個是db1(主),一個是db2(從)。
可以通過修改/etc/sysconfig/network實現
兩台資料庫root密碼為chengshan
1 進入主伺服器
mysql –u root –p
密碼:chengshan
mysql>下輸入:show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 107 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
如果提示為空白則需要在/etc/my.cnf 下的mysqld中添加
log-bin=mysql-bin
server-id=10
注意看裡面的參數,特別前面兩個File和Position,在從伺服器(Slave)配置主從關係會有用到的。
建立同步處理的使用者
grant replication slave on *.* to [email protected] identified by ‘123456‘;
//建立使用者user1密碼為123456,指定IP為從伺服器可以訪問的。
flush privileges;
修改/etc/my.cnf
在[mysqld]下修改即可:
[mysqld]
server-id = 1
log-bin=mysql-bin //其中這兩行是本來就有的,可以不用動,添加下面兩行即可
binlog-do-db = opts2 //指定需要被同步的資料庫名稱如opts2
binlog-ignore-db = mysql //指定不需要被同步的資料庫名稱如mysql內建的mysql或其他的資料庫,如果不指定這兩條預設全部都同步。
修改好後
service mysql restart //重啟mysql服務,不解釋。如果成功則沒問題。
主伺服器配置完畢。
2 進入從伺服器
首先修改/etc/my.cnf配置
[mysqld] //在[mysqld]段後修改
server-id = 2 //修改1為2
log-bin=mysql-bin //預設配置,開啟日誌記錄,不用改
replicate-do-db = opts2 //指定需要去主伺服器發起同步的資料庫名如opts2
replicate-ignore-db = mysql,information_schema,performance_schema
// 執行不需要進行同步的資料庫名
service mysql restart //不解釋
用change mster 語句指定同步位置
mysql –u root –p
密碼:chengshan
mysql>
建立同步處理的使用者
grant replication slave on *.* to [email protected] identified by ‘123456‘;
//建立使用者user2密碼為123456,指定IP為主伺服器可以訪問的。其實這句話可以不用打,這句話是給互相備份用的(主-主關係),不過配上也沒事,沒有設定許可權。
mysql>stop slave; //先停步slave服務線程,這個是很重要的,如果不這樣做會造成以下操作不成功。
mysql>change master to
->master_host=‘192.168.0.90‘,
->master_user=‘user1‘,
->master_password=‘123456‘,
->master_log_file=‘mysql-bin.000003 ‘,
->master_log_pos=107;
註:master_log_file, master_log_pos由主伺服器(Master)查出的狀態值中確定。也就是剛剛叫注意的。master_log_file對應File, master_log_pos對應Position。
mysqlbinlog mysql-bin.000003 > 0.txt
斷行符號後,如成功會有OK提示,如果不成功則要重新設定slave。指令如下
mysql>stop slave;
mysql>reset slave;
之後停止slave線程重新開始。成功後,則可以開啟slave線程了。
flush privileges;
mysql>start slave; //重新啟動
mysql>show slave status\G; //查看從伺服器狀態
# service mysql restart //不解釋
至此從伺服器設定完成。
MySQL雙機熱備部署