欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

使用MySQL的镜像功能进行数据同步

程序员文章站 2022-03-27 11:11:28
...

数据库版本:5.1.24。 4.x版本的数据库请自己去找相应文档。 英文版文档的原文地址:http://dev.mysql.com/doc/refman/5.1/en/re

数据库版本:5.1.24。

4.x版本的数据库请自己去找相应文档。

英文版文档的原文地址:

1 在主服务器(master)正常运行的情况下,创建一个专门用来同步数据的用户。

CREATE USER ‘用户名’@'从服务器IP’ IDENTIFIED BY ‘密码’;

GRANT REPLICATION SLAVE ON *.* TO ‘用户名’@'从服务器IP’;

这个用户名和密码(明文)以后会自动保存到从服务器上的master.info里面。

2 修改主服务器上面的my.cnf

[mysqld]

log-bin=mysql-bin

server-id=1

这个镜像系统中的每一台mysql主机都需要一个不同的server-id (1~2的32次方-1)

PS:如果使用了innodb, 还需要加上:

innodb_flush_log_at_trx_commit=1

sync_binlog=1

PS again: 主服务配置文件里面一定不能有 skip-networking

PS3: 主服务器防火墙开放3306端口给从服务器。

然后重新启动主服务器的mysqld,,使配置生效。

3 获取主服务器状态信息并复制数据。

3.1 获取主服务器二进制日志的座标

在主服务器上运行一个mysql客户端,

mysql> FLUSH TABLES WITH READ LOCK;

这会flush所有的数据表,并且阻塞所有的写入操作。

对于innodb类型的表,COMMIT 语句也会阻塞。

不要退出这个mysql客户端,否则这个read lock会失效。

在主服务器上重新打开一个mysql客户端,

mysql > SHOW MASTER STATUS;

+—————+———-+————–+——————+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+—————+———-+————–+——————+

| mysql-bin.003 | 73 | test | manual,mysql |

+—————+———-+————–+——————+

File 字段显示的是二进制日志的文件名

Position 显示的是此文件中的偏移量。 抄下来这二个数据。

They represent the replication coordinates at which the slave should begin processing new updates from the master.

使用MySQL的镜像功能进行数据同步