这篇文章给大家介绍如何进行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
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
…
…
验证
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数据库主从同步中数据库同步配置就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。