共計 2934 個字符,預計需要花費 8 分鐘才能閱讀完成。
這篇文章給大家介紹如何進行 mysql 數據庫主從同步中數據庫同步配置,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
背景:最近有一個 mysql 數據庫同步的需求,我用了 mysql 主從同步的方法來實現。下面把步驟記錄一下。
環境和拓撲
操作系統:Centos6.6 X64
mysql 版本:5.1.73
Master: 10.6.1.210
Slave: 10.6.1.211
需求: 實現 Master 上 test 庫同步到 Slave 上, 但是禁止同步該庫下的 AA 表
1.配置 Master 上的 my.cnf
#vim /etc/my.cnf 添加內容到 [mysqld] 下,設定只同步 test 數據庫:
[mysqld]
log-bin=mysql-bin
binlog_format=mixed
binlog_do_db=test
server-id=1
2.配置 Slave 上的 my.cnf
#vim /etc/my.cnf
添加內容到 [mysqld] 下:
log-bin=mysql-bin
binlog_format=mixed
server-id=10
relay-log =relay-bin
log_slave_updates=1
replicate_ignore_table=AA(忽略同步某個表)
3.在 Master 中建立一個備份帳戶:每個 slave 使用標準的 MySQL 用戶名和密碼連接 Master,用戶名的密碼都會存儲在文本文件 master.info。進行復制操作的用戶會授予 REPLICATION SLAVE 權限。
命令如下:
# 建立一個帳戶 repluser,并且只能允許 10.6.1.211 這個主機來登陸,密碼是 123456。
mysql grant replication client,replication slave on *.* to repluser @ 10.6.1.211 identified by 123456
QueryOK,0 rows affected(0.00sec)
mysql flush privileges;
QueryOK,0 rows affected(0.00sec)
4.拷貝數據,保持數據庫內數據一致,新安裝可以忽略此步驟。
備份 Master 上的 test 庫,然后復制到從服務器上.
#mysqldump -u root -p password123 test /tmp/test.sql
將導出的數據庫復制到從服務器上。
#scp /tmp/test.sql root@10.6.1.211:/tmp/
在 Slave 上導入新的 test 數據庫。登陸從后運行
#mysql -u root -p password123 test /tmp/test.sql
5.重啟 mysql 服務,主從 server 均要重啟。
#service mysql restart
6.查看 Master 數據庫上的 bin 文件以及時間點. 登錄 Master 服務器的 mysql 后執行:
mysql show master status;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000015 | 2474 | test | |
+——————+———-+————–+——————+
1 row in set (0.00 sec)
此處,bin 文件為 mysql-bin.000015,節點為 2474。
7.啟動從服務器的中繼日志,登陸從服務器的 mysql 后執行以下命令,標紅部分為剛才在主服務器上查詢到的 bin 文件以及節點信息:
mysql change master to master_host= 10.6.1.210 ,master_user= repluser ,
master_password= 123456 ,master_log_file= mysql-bin.000015 ,master_log_pos=2474,
master_connect_retry=5
QueryOK,0 rows affected(0.03sec)
# 開啟從服務器節點的復制進程,實現主從復制;
mysql start slave;
# 查看從服務器狀態,主要關注 IO 線程和 SQL 線程的開啟狀況:
mysql show slave status \G
…
…
Slave_IO_Running:Yes #IO thread 是否運行
Slave_SQL_Running:Yes #SQL thread 是否運行
…
…
8.查看主從服務器上的線程狀態
主服務器:
mysql show processlist \G
…
…
State: Has sent all binlog to slave; waiting for binlog to be updated
…
…
從服務器
mysql show processlist \G
…
…
State: Has read all relay log; waiting for the slave I/O thread to update it
…
…
至此,mysql 數據庫主從同步復制配置完成.
驗證
1. 在 Master 上的 test 庫下新建一個 test 表. 插入記錄,然后看看是否同步到了 Slave 上。
Master 上建表
mysql CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ;
Master 上插入記錄
mysql insert into test(id,name) values(1, steven
mysql select * from test;
+—-+——–+
| id | name |
+—-+——–+
| 1 | steven |
+—-+——–+
1 row in set (0.00 sec)
Slave 上查看是否同步過去.
mysql select * from test;
+—-+——–+
| id | name |
+—-+——–+
| 1 | steven |
+—-+——–+
1 row in set (0.00 sec)
2. 在 Master 上的 test 庫下新建一個 AA 表. 插入記錄,然后看看是否同步到了 Slave 上。
在 Master 上查詢 AA 表.
mysql select * from AA;
+—-+——–+
| id | name |
+—-+——–+
| 1 | Angelababy |
+—-+——–+
1 row in set (0.00 sec)
Slave 上查詢 AA 記錄是空.
mysql select * from AA;
Empty set (0.00 sec)
關于如何進行 mysql 數據庫主從同步中數據庫同步配置就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。