mysql链式复制_MySQL主从服务器链式复制配置(ubuntu)
服務器結構:
A、B、C三臺服務器; 其中A為新聞數據源,A為B的Master,B為A的Slave,同時也是C的Master;
B服務器從A復制部分數據,C備份A的所有數據;
配置:
Master A的配置
sudo vi /etc/mysql/my.cnf
刪除以下參數前的注釋并修改
server-id = 1 //分配server-id
log-bin = master-bin //默認mysql-bin,可以不修改
log-bin-index = master-bin.index //非必須
bind-adress = 0.0.0.0 //默認127.0.0.1 不修改可能導致無法訪問
修改系統防火墻使B服務器可以訪問3306端口,(詳查ufw命令)
重啟mysql:
sudo /init.d/mysql restart
通過語句:
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO user@'ip B' IDENTIFIED BY 'password';
給B服務器建立一個可以連接到A的帳號
進入mysql,通過:
show master status;
查看A的狀態,記錄下file的位置和postion的參數
Slave B的配置
sudo vi /etc/mysql/my.cnf
server-id = 2
log-bin = slave-bin
bind-address = 0.0.0.0
relay-log-index = slave-relay-bin.index //非必須
relay-log = slave-relay-bin //非必須
添加參數:
log-slave-updates = 1
//通常情況,從服務器從主服務器接收到的更新不記入它的二進制日志。
//該選項告訴從服務器將其SQL線程執行的更新記入到從服務器自己的二進制日志。
replicate_wild_do_table = copy_db.copy_table //表示需要復制的庫中的表,可以善用%
replicate_wild_ignore_table = ignore_db.ignore_table //不復制的表
至于為什么不使用replicate_do_db和replicate_ignore_db參數,
是為了方式跨庫更新時出錯,如果能確保不會跨庫更新可考慮
重啟mysql,進入本機mysql
執行以下語句:
CHANGE MASTER TO MASTER_HOST='server A ip',
MASTER_PORT=3306,
MASTER_USER='user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=0;
//MASTER_LOG_FILE和MASTER_LOG_POS對應A中的file位置和postion參數,表示開始復制的bin文件和位置
start slave; //啟動Slave
show slave status; //查看Slave_IO_State參數,如果是Waiting for master to send event,則正常
//正常狀態下Slave_IO_Running與Slave_SQL_Running均為yes
//如不能正常鏈接,根據Slave_IO_State,Slave_IO_Running,Slave_SQL_Running,Last_IO_Error
//等參數查找失敗原因
通過:
show master status;
命令記錄file位置和postion參數;
給C服務器分配一個帳號用于同步;
方法參照A,防火墻設置參照A;
Slave C的配置
sudo vi /etc/mysql/my.cnf
server-id = 3
relay-log-index = slave-relay-bin.index //非必須
relay-log = slave-relay-bin //非必須
通過CHANGE MASTER TO語句來修改master的參數,參照B的配置;
通過
show slave status;
檢查C的狀態,參照B
總結
以上是生活随笔為你收集整理的mysql链式复制_MySQL主从服务器链式复制配置(ubuntu)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果验证电子邮件地址服务器错误,苹果7P
- 下一篇: 操作系统hpf算法事例_操作系统中常见算