mysq主從復制配置並不難,但因為涉及到很多環節,總會遇到些問題,現將筆者的配置過和記錄如下
說明:
兩台服務器
主:192.168.1.110
從:192.168.1.111
步驟:
一、主(192.168.1.110)服務器上的配置
1、GRANT創建用戶並授權,ip為從服務器的ip,本句含義是為創建一個用戶名為uname,密碼為upwd的用戶,這個用戶只能從192.168.1.111上進行訪問
1 mysql> grant replication slave on *.* to 'uname'@'192.168.1.111' identified by 'upwd'; 2 Query OK, 0 rows affected (0.01 sec)
2、修改my.cnf配置文件如下:
1 log-bin=mysql-bin #啟動二進制文件 2 server_id=1 #服務器ID
3、重啟mysql
此時可以查看主服務器binlog日志position值
1 show master status
4、鎖定所有表
1 mysql> FLUSH TABLES WITH READ LOCK;
5、備份表
1 [root@localhost mysql]# mysqldump -uroot -p --all-databases -l -F >all_db.sql
6、解鎖
1 mysql> UNLOCK TABLES;
7、把數據傳到從庫(192.168.1.111)
1 # scp all_db.sql root@192.168.1.111:/tmp
二、設置從服務器(192.168.1.111)
1、修改從服務器my.cnf配置文件
1 log_bin = mysql 2 server_id = 110
2、重啟mysql服務器
1 service mysqld restar
3、導入主備份文件
1 # mysql -uroot -p </tmp/all_db.sql
4、同步binlog日志
1 change master to master_host='192.168.1.110',master_user='admin',master_password='admin',master_log_file='mysql.000004',master_log_pos=120; 2 //如果沒必要,可以change master to master_host='192.168.1.110',master_user='admin',master_password='admin';
5、開啟slave服務器同步
1 start slave
至此,服務器設置全部結束
三、遇到的問題
1、
1 mysql> grant replication slave on *.* to 'admin'@'192.168.1.111' identified by 'admin'; 2 //遇到如下錯誤 3 ERROR 2013 (HY000): Lost connection to MySQL server during query
這東西困擾我太久了
解決方法
1 mysql_upgrade -uroot -ppassword//更新一下數據庫,解決了
2、從服務器總連接不到主服務器,查看日志有如下錯誤
1 Slave I/O: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593
但主從my.cnf中的server_id並不同,google之后,發現主從數據目錄(/data/mysql)都有一個auto.cnf文件,里面記錄的server-uuid是相同的,把從服務器的此文件刪除,並重啟服務器,連接成功
產生以上錯誤的原因是本人在在虛擬機上配置,只在一個服務器上裝了mysqld,然后復制了服務器,導致兩服務器的mysql配置完全相同,實際中應該不會遇到此問題