Mysql数据同步(单向)

首先准备两台服务器:

主:192.168.1.88

从:192.168.1.78

创建需要同步的数据库,比如为sync_db,将这个数据库各拷贝到78和88一份

 G4QQP36U9$){EF9`N2AZP(O

 

修改主服务器88上的配置,找到my.cnf文件,若不知道位置,可以使用

#find / -name “my.cnf”找到

#vi /etc/my.cnf

添加:

#88 master server

server-id=100088

log-bin

binlog_do_db=sync_db

解释:

1)      server-id:标识,唯一,值范围在:1至2^23-1

2)      log-bin:配置是否在数据库有变动时写二进制日志,在mysql的的数据目录下回生成

mysqld-bin.000001的文件。

可在mysql命令行通过show variables like ‘%bin’;查看是否开启,ON表示已开启。

3)      binlog_do_db:同步的数据库

修改从服务器78的配置,在my.cnf中添加

#23 slave server

server-id=100078

master-host=192.168.1.88

master-user=root

master-password=123456

master-port=3306

master-connect-retry=60

replicate-do-table=sync_db.c_user

replicate-do-table=sync_db.c_citys

解释:

1)      master-host, master-user, master-password, master-port分别为主服务器的主机IP,用户,密码,端口

2)      master-connect-retry为:尝试连接的最大时间,单位为秒

3)      replicate-do-table为:同步的表,也可以使用replicate-do-db=sync_db同步整个数据库

 

重启主服务器和从服务器

#service mysqld restart

主服务器数据库目录下会生成mysqld-bin.index和mysqld-bin.000001文件

mysqld-bin.000001为主服务器操作的记录,包括sql语句等

从服务器数据库目录会生成:

master.info

relay-log.info

mysql-bin.index

mysql-bin.000001

mysqld-relay-bin.index

mysqld-relay-bin.000001

测试同步

更改主服务器88上的数据

insert into c_user(name,sex,age,address) values(‘zhangsan’,’1′,20,’beijing’);

可看到从服务器上也同时插入了一条数据

查看主从服务器同步状态

主服务器

mysql>show master status

 2

从服务器

3

解释:

1)  Slave_IO_Running和Slave_SQL_Running的值均为Yes时为同步开启;

2)  Last_Errno和Last_Error是错误信息的提示(如果有错误)

 

故障修复:

若发现从服务器数据中断,可使用change重新定位同步点,如下:

stop slave; # MySQL 返回的查询结果为空 (即零行)。

CHANGE MASTER TO

MASTER_HOST=’192.168.1.88′,

MASTER_LOG_FILE=’mysqld-bin.000043′,

MASTER_LOG_POS=464512808;# MySQL 返回的查询结果为空 (即零行)。

start slave;# MySQL 返回的查询结果为空 (即零行)。

MASTER_LOG_FILE和MASTER_LOG_POS为主服务器上的同步二进制文件同步点

可通过show master status查看

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>