一、環境
1 作業系統 :CentOS 6.5 2 資料庫版本:MySQL 5.6.27 3 主機A:192.168.1.1 (Master) 4 從機B:192.168.1.2 (Slave) 5 從機B:192.168.1.3 (Slave)
說明:做1臺slave,2臺、3臺都可以。
二、基本環境配置
MYSQL是透過3306埠訪問的,所以要保證防火牆對3306埠的開啟。
三、Master的配置
1、配置my.cnf
在Linux環境下MySQL的配置檔案的位置是在 /etc/my.cnf ,在該檔案下指定Master的配置如下:
[root@mycentos ~]# vim /etc/my.cnf server-id = 1 # 一般用IP的最後一段,這個標識是唯一的 log-bin = mysql-bin # 排除不同步的庫 #binlog-ignore-db = test #binlog-ignore-db = mysql #binlog-ignore-db = performance_schema #binlog-ignore-db = information_schema # 選擇要同步的庫 binlog-do-db = vertical_analysis binlog_format = mixed expire_logs_days = 7 relay-log = relay-log log_slave_updates skip-slave-start
說明:
binlog-ignore-db:表示同步的時候ignore的資料庫
binlog-do-db:指定需要同步的資料庫
binlog-ignore-db 和 binlog-do-db 是互斥的,二選一即可。
2、重啟mysql
[root@mycentos ~]# service mysqld restart
3、進入mysql
[root@mycentos ~]# mysql -u root -p
4、 賦予從庫許可權帳號
允許使用者在主庫上讀取日誌,賦予192.168.1.2/3也就是Slave機器有File許可權,只賦予Slave機器有File許可權還不行,還要給它REPLICATION SLAVE的許可權才可以。
在Master資料庫命令列中輸入:
mysql> GRANT FILE ON *.* TO 'slaver'@'%' IDENTIFIED BY '123456'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'slaver'@'%' IDENTIFIED BY '123456'; mysql> FLUSH PRIVILEGES
這裡slaver 使用者作為同步的時候使用到的使用者,可以自己設定。
5、檢測授權結果
mysql> use mysql;
mysql> select * from user where host='%' and user='slaver'\G; # 如果Repl_slave_priv項為Y,表示授權成功。
6、檢視主資料庫master狀態
mysql> show master status; +------------------+----------+-----------------------+---------------------------------------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+-----------------------+---------------------------------------------------+-------------------+ | mysql-bin.000004 | 28125 | vertical_analysis | performance_schema ,information_schema,test,mysql | | +------------------+----------+-----------------------+---------------------------------------------------+-------------------+ 1 row in set (0.00 sec)
這裡的 File 、Position 是在配置Salve的時候要使用到的,Binlog_Do_DB表示要同步的資料庫,Binlog_Ignore_DB 表示Ignore的資料庫,這些都是在配置的時候進行指定的。
四、備份一份主庫的資料庫,並還原到從庫上
從庫同步時,就從上面記錄的log和position開始同步
五、Slave的配置
1、配置my.cnf
[root@mycentos ~]# vim /etc/my.cnf server-id = 2 # 一般用IP的最後一段,這個標識是唯一的 log-bin = mysql-bin binlog_format = mixed expire_logs_days = 7 relay-log = relay-log # 注意:不同的slave這裡也是唯一的 # 排除不需要同步的資料庫 #binlog-ignore-db = information_schema #binlog-ignore-db = performance_schema #binlog-ignore-db = mysql #binlog-ignore-db = test # 選擇要同步的資料庫 replicate-do-db = vertical_analysis replicate-ignore-db = mysql log_slave_updates skip-slave-start slave-skip-errors = all slave-net-timeout = 60
說明:
binlog-ignore-db:表示同步的時候ignore的資料庫
binlog-do-db:指定需要同步的資料庫
binlog-ignore-db 和 binlog-do-db 是互斥的,二選一即可,但最好和主庫設定的一至。
2、配置Slave同步資訊
#重啟資料庫 [root@mycentos ~]# service mysqld restart
mysql> stop slave; mysql> change master to master_host='192.168.1.1', master_port=3306, master_user='slaver', master_password='123456', master_log_file='mysql-bin.000004', master_log_pos=28125; mysql> start slave;
3、檢測從資料庫複製功能狀態
mysql> show slave status\G; # 其中下面兩項都必須為yes。 Slave_IO_Running: Yes Slave_SQL_Running: Yes
六、驗證
在主庫上建一張表,看下從庫是否同步過來。
附:
錯誤1:Slave failed to initialize relay log info structure from the repository
解決方法:使用reset slave all清空所有的複製資訊,然後重置master.info、start slave後複製正常。