MySQL 主從分離主庫配置
1、/etc/my.cnf 主要資料庫配置
#一般已存在
server-id = 1
#需要進行複製的資料庫
binlog-do-db = search
#不需要進行複製的資料庫
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
#產生的同步資料所需要的檔案,序號從: mysql-bin.000001開始
log-bin=mysql-bin
2、重啟mysql,登陸Mysql,設定從資料庫所需要的許可權:可以從任何機器登陸,帳號/密碼:slave1/ passw0rd
grant replication slave,reload,super on *.* to 'slave1'@'%' identified by 'passw0rd';
3、查看狀態
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 | 7657 | search | |
+------------------+----------+--------------+------------------+
1 row in set (0.01 sec)
---------------------------------------------------------------------------------------------------
從庫配置
1、/etc/my.cnf 從資料庫配置,由於Mysql版本從5.1.7以後開始就不支援“master-host”類似的參數,用設定檔設定主從同步時,出現:mysqld: unknown variable 'master-host=127.0.0.1'
#將設定檔中的server-id該為2
server-id = 2
(可能不起作用,需要登入資料庫後,使用show variables like 'server_id'; 查看。然後設定set
global server_id=2;)
#需要進行同步的資料庫名稱
replicate-do-db = mydatabase
2、重啟mysql,登陸Mysql,設定同步設定,其中syslog.000001為記錄檔,master_log_pos=0為日誌開始複製的位置,即:從syslog.000001的0位置同步資料,記錄檔和行號根據實際情況進行處理
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> change master to
-> master_host='110.103.8.14',master_user='slave1',master_password='passw0rd',
-> master_log_file='mysql-bin.000005',master_log_pos=7657,master_port=53306;
Query OK, 0 rows affected (0.10 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
show slave status\G; 命令易讀性好一點