mysql replication官方中文文檔
准備工作:
1.保證Master/Slave兩台主機上mysql的版本一致,避免不必要的麻煩。
2.保證Master/Slave能夠互相ping通,能夠通信。
Master主機IP:192.168.1.1
Slave主機IP:192.168.1.2
配置my.ini:
Master - my.ini
在[mysqld]下添加:
log-bin = mysql-bin #因為MYSQL是基於二進制的日志來做同步的,每個日志文件大小為 1G
server-id = 1 #主標服務標識號,必需唯一
binlog-do-db = db_user #要同步的庫名
binlog-do-db = db_topic
binlog-ignore-db=mysql,test #不記錄日志的庫,即不需要同步的庫
Slave - my.ini
在[mysqld]下添加:
server-id = 2
log-bin = mysql-bin #如果不做雙向同步則slave機不需要寫二進制日志的
log-slave-updates
master-host = 192.168.1.1
master-user = slave #Slave主機訪問Master的用戶名
master-password = 123456 #Slave主機訪問Master的密碼
master-port = 3306
replicate-ignore-db = mysql #不同步的數據庫
replicate-do-db = db_user #要同步的數據庫
replicate-do-db = db_topic
重啟Master和Slave
#net stop mysql
#net start mysql
mysql>show master status;#查看my.ini是否配置成功
創建帳號 (Slave訪問Master)
mysql>grant replication slave,reload,super,select on *.* to slave@’%’ identified by ‘123456′;
mysql>flush privileges;
備份Master主機的數據庫(db_user,db_topic)
#如果表結構都是MyISAM,可以直接copy文件
mysql> flush tables with read lock; #加鎖,禁止寫操作
mysql> mysqldump -uroot -proot -P3306 –databases db_user db_topic > backdb.sql
將Master的數據導入到Slave
如果所有的數據庫表結構都是MyISAM
mysql>load data from master;
否則
mysql -uroot -proot < backdb.sql
停止Slave
mysql>stop slave;
告訴 slave 當前 master 的值
mysql> change master to master_host=’192.168.1.1′,master_user=’slave’,master_password=’123456′,master_port=3306,master_log_file=’mysql-bin.000001′,master_log_pos=98;
mysql> start slave; #開始同步
檢測 Slave 狀態
mysql> show slave status\G;
#最重要的三個字段為以下值時成功了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
返回到Master機
mysql> unlock tables; #解鎖
至此 Master/Slave 應該配置好了,
你可以試試在Master的db_user添加一條記錄,Slave中也可以select到