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)
轉載于:https://blog.51cto.com/pizibaidu/1791003
總結
以上是生活随笔為你收集整理的mysql数据库主从同步配置教程--数据库同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 探秘Tomcat——一个简易的Servl
- 下一篇: 项目打包去掉调试时的NSLog、prin