此文章來源於我的另一個博客轉載過來。
數據庫主從互備
實驗環境:
centos 6.3 64bit
mysql版本:mysql-5.5.28
server1=192.168.1.38
server2=192.168.1.39
1.38
1、初始化數據庫
#service mysqld stop
#/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var
#service mysqld start \\重新啓動mysld
2、修改root密碼
#mysql
mysql>use mysql;
mysql>update user set password=password('root') where user='root'; //把root密碼修改爲root
mysql>flush privileges;
mysql>exit
3、創建數據同步用戶,並授權只允許master-slave IP登陸
mysql>use mysql;
mysql>insert into mysql.user (Host,User,Password) values ('localhost','repluser',password('repluser'));
mysql>grant all privileges on *.* to 'repluser'@'192.168.1.39' identified by 'repluser';
mysql>flush privileges;
4、創建普通測試用戶soul,允許在任何IP登陸訪問
mysql>use mysql;
mysql>insert into mysql.user (Host,User,Password) values ('%',‘soul',password('soul'));
mysql>grant all privileges on *.* to 'soul'@'%' identified by 'soul';
mysql>flush privileges;
5、導入數據庫mobiledb
#mysql -uroot -p
mysql>use mysql;
mysql>create database mobiledb; //先創建數據庫
mysql>quit
#mysql -uroot -p mobiledb < /home/databackup/mobiledb.sql
或者在控制界面source導入
#mysql -uroot -p
mysql>source /home/databackup/mobiledb.sql;
1.39
6、數據庫初始化
#service mysqld stop
#/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var
#service mysqld start \\重新啓動mysld
7、把1.38數據庫var目錄拷貝到1.39代替掉原來的var
1.38#server mysqld stop
1.39#server mysqld stop
1.38#scp -P43998 -r /usr/local/mysql/var [email protected]:/usr/local/mysql/
8、重啓兩套服務器的mysqld
1.38#service mysqld start
1.39#chown mysql.mysql /usr/local/mysql/var -R \\務必要對數據存放目錄的屬主改爲mysql放有權限
1.39#service mysqld start
9、在1.39上創建同步用戶
mysql>use mysql;
mysql>insert into mysql.user (Host,User,Password) values ('localhost','repluser',password('repluser'));
mysql>grant all privileges on *.* to 'repluser'@'192.168.1.38' identified by 'repluser';
mysql>flush privileges;
10、先在1.39做單向同步1.38的數據
1.38#mysql -uroot -p
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000011
Position: 676
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.01 sec)
ERROR:
No query specified
1.39#mysql -uroot -p
mysql> change master to MASTER_HOST='192.168.1.38',
-> MASTER_USER='repluser',
-> MASTER_PASSWORD='repluser',
-> Master_Port=3307,
-> Master_Log_File='mysql-bin.000011',
-> Master_Log_Pos=676;
#start slave; \\啓動同步
查看結果
mysq>show slave status\G;
目前結果:1.39能單步同步1.38的數據
11、在1.38上做同步1.39上的數據
b:查看1.39mysql master 的日誌
1.39#mysql -uroot -p
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000014
Position: 338
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.01 sec)
ERROR:
No query specified
1.38#mysql -uroot -p
mysql> change master to MASTER_HOST='192.168.1.39',
-> MASTER_USER='repluser',
-> MASTER_PASSWORD='repluser',
-> Master_Port=3307,
-> Master_Log_File='mysql-bin.000014',
-> Master_Log_Pos=338;
#start slave; \\啓動同步
查看結果:
測試結果:1.38 1.39能實時兩邊同步。
注意:檢查1.38 1.39 的所有my.cnf配置文件 server-id 不能相同 server-id必須唯一值