两台服务器的MySQL数据库同步

为了区分我把被复制的服务器称为主服务器,要去复制的称为次服务器

1.在主服务器上进行配置:

  • 打开MySQL配置文件(通常是/etc/my.cnf)。
  • 确保以下参数已启用或添加到配置文件中:
    [mysqld]
    server-id=1
    log-bin=mysql-bin
  • server-id 可以是唯一的正整数,标识主服务器。
  • log-bin 启用二进制日志记录,用于记录主服务器上的写操作。
  • 重启MySQL服务以使配置更改生效。

2.在次服务器上进行配置:

  • 打开MySQL配置文件。
  • 确保以下参数已启用或添加到配置文件中:
    [mysqld]
    server-id=2
    relay-log=mysql-relay-bin
    read_only=1

  • server-id 是次服务器的唯一标识。
  • relay-log 是用于存储从主服务器接收的日志的文件名。
  • read_only 设置为1,以确保次服务器只允许读取操作。
  • 重启MySQL服务。

3.在主服务器上创建用于复制的用户:

  • 连接到主服务器的MySQL命令行界面。
  • 执行以下命令创建一个新用户,并授予复制权限:
    CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
    FLUSH PRIVILEGES;

    替换 'replication_user''password' 为您自定义的用户名和密码。

4.在次服务器上启动复制进程:

先在次服务器上测试是否成功连接上了主服务器

mysql -h 主服务器ip -u 用户名 -p

 如果输出的是

Welcome to the MySQL monitor...
mysql>

则代表连接成功,如果没成功检查主服务器是否开放端口

  • 连接到次服务器的MySQL命令行界面。
  • 执行以下命令开始复制进程:
    STOP SLAVE; -- 如果复制进程已经在运行,先停止它
    CHANGE MASTER TO MASTER_HOST='主服务器IP地址', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='主服务器上的二进制日志文件名', MASTER_LOG_POS=0;
    START SLAVE;  -- 启动次服务器的复制进程
  • 替换 '主服务器IP地址''replication_user''password''主服务器上的二进制日志文件名' 为实际的值。
    主服务器上的二进制日志文件名可以通过SHOW MASTER STATUS;来查看
    1.先登录mysql
    mysql -u root -p

    输入密码后在mysql>后输入

    SHOW MASTER STATUS;

    显示的就是主服务器上的二进制日志文件名和MASTER_LOG_POS了

  • 使用
    SHOW SLAVE STATUS\G 

    命令来检查复制进程的状态,确保 Slave_IO_RunningSlave_SQL_Running 都显示为 Yes
    如果是图片的这样则成功

如果只想复制 db_test数据库中的特定表user,可以使用 MySQL 复制过滤器来实现。


停止次服务器的复制进程。在次服务器上执行以下命令:

STOP SLAVE;

 修改次服务器的配置文件。打开次服务器上的 MySQL 配置文件(my.cnf)

[mysqld]
replicate-wild-do-table=db_test.user
replicate-wild-do-table=db_test.table1

然后重新执行复制的代码即可

STOP SLAVE; -- 如果复制进程已经在运行,先停止它
CHANGE MASTER TO MASTER_HOST='主服务器IP地址', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='主服务器上的二进制日志文件名', MASTER_LOG_POS=0;
START SLAVE;  -- 启动次服务器的复制进程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值