主要介紹兩個場景:
- 生產環(huán)境已經有正在運行的數據庫独泞。
- 生產環(huán)境已經有正常運行的主從數據庫歧譬,想再添加一臺從數據庫亡笑。
本文說一下第一種情況脸狸。
假設正在運行的數據庫的ip為192.168.1.2,而想要添加為從數據庫的ip為192.168.1.3。
- 登錄主數據庫服務器缴渊,修改數據庫配置赏壹,設置一個server-id,并開啟bin-log,然后重啟數據庫衔沼,同時再創(chuàng)建一個專門用于復制數據的用戶
$ ssh root@192.168.1.2
$ vim /etc/mysql/mysql.conf.d/mysql.cnf
#添加 server-id=1
#添加 log_bin = /var/log/mysql/mysql-bin.log
$ service mysql restart
$ mysql -u root -p
mysql> grant replication slave on *.* to 'repl_user'@'192.168.1.3' identified by 'repl_pass';
mysql> flush privileges;
- 連接到數據庫蝌借,并將數據庫設置為只讀田柔,然后查看當前執(zhí)行到的bin-log文件以及文件的坐標,然后備份數據后骨望,再把鎖釋放掉硬爆。
$ mysql -u root -p
mysql> flush tables with read lock;
mysql> show master status;
mysql> exit;
$ mysqldump
- 登錄到從數據庫服務器,修改數據庫配置重啟后導入上一步備份的數據擎鸠,然后將主數據庫服務器設置成192.168.1.2凝果,最后開啟復制策菜。
$ ssh root@192.168.1.3
$ vim /etc/mysql/mysql.conf.d/mysqld.cnf
#添加 server-id=2 ,server-id不能和主數據庫的相同
#添加 skip-slave-start,意思是啟動數據庫的時候默認不開啟復制
$ service mysql restart
#導入數據
$ mysql -u root -p<備份文件
$ mysql -u root -p
mysql> change master to
-> MASTER_HOST='192.168.1.2',
-> MASTER_USER='repl_user',
-> MASTER_PASSWORD='repl_pass',
-> MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=recorded_log_position;
mysql> start slave;
- 最后可以檢查從數據庫的狀態(tài)
mysql> show slave status;