RedHat Linux 9下MySQL双向同步复制

一、准备服务器由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版

设置MySQL数据双向同步

一、准备服务器
由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave版本。
more.. | less.. | 本文中,我们假设主服务器(以下简称Master)和从服务器(以下简称Slave)的版本都是5.0.27,操作系统是RedHat Linux 9。
假设同步Master的主机名为:master(IP:192.168.1.123),Slave主机名为:slave(IP:192.168.1.124),2个MySQL的basedir目录都是/usr/local/mysql,datadir都是:/var/lib/mysql。

二、设置同步服务器
1、设置同步Master
修改 my.cnf 文件,,在
# Replication Master Server (default)
# binary logging is required for replication
添加如下内容:
#log-bin=/var/log/mysql/updatelog
server-id = 1
binlog-do-db=discuz
binlog-ignore-db=mysql
重启MySQL,创建一个MySQL帐号为同步专用
# /usr/local/mysql/bin/mysql -u root -p
mysql> GRANT REPLICATION SLAVE ON *.* TO [email=]’back’@’%'[/email] IDENTIFIED BY ‘back’;
如果想要在Slave上有权限执行 “LOAD TABLE FROM MASTER” 或 “LOAD DATA FROM MASTER” 语句的话,必须授予全局的 FILE 和 SELECT 权限:
mysql>GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO   [email=]’back’@’%'[/email] IDENTIFIED BY ‘back’;
mysql> FLUSH PRIVILEGES ;

2、设置同步Slave
修改my.cnf文件,添加
server-id = 2
master-host = 192.168.1.123
master-user = back
master-password = back
master-port = 3306
replicate-ignore-db=mysql
replicate-do-db=discuz

重启MySQL

3、启动同步
在主服务器master MySQL命令符下:
# /usr/local/mysql/bin/mysql -u root -p
mysql> show master status;
显示(当然这个是我机器的情况,你的不可能跟我一样哈,只是个例子):
+——————+———-+——————-+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+——————-+——————+
| mysql-bin.000009 | 98 | discuz | mysql |
+——————+———-+——————-+——————+

在从服务器master MySQL命令符下:
# /usr/local/mysql/bin/mysql -u root -p
mysql> slave stop;
mysql> change master to master_host=’192.168.1.123′, master_user=’back’, master_password=’back’, master_log_file=’mysql-bin.000009′, master_log_pos=98;
mysql> slave start;

用show slave statusG;看一下从服务器的同步情况
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果都是yes,那代表已经在同步
往表里面写点数据测试一下看是否同步成功,如果不成功,绝对不是你的RP问题,再检查一下操作步骤!

4、设置双向同步

修改slave服务器的my.cnf,添加
log-bin=/var/log/mysql/updatelog
binlog-do-db=discuz
binlog-ignore-db=mysql

重启MySQL,创建一个MySQL帐号为同步专用
mysql> GRANT REPLICATION SLAVE ON *.* TO [email=]’back’@’%'[/email] IDENTIFIED BY ‘back’;
mysql> GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO   [email=]’back’@’%'[/email] IDENTIFIED BY ‘back’;
mysql> FLUSH PRIVILEGES ;

修改master服务器的my.cnf,添加
master-host = 192.168.1.124
master-user = back
master-password = back
master-port = 3306
replicate-ignore-db=mysql
replicate-do-db=discuz

重启MySQL

在主服务器slave MySQL命令符下:
show master status;
+——————+———-+——————-+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+——————-+——————+
| mysql-bin.000013 | 98 | discuz | mysql |
+——————+———-+——————-+——————+

在服务器A MySQL命令符下:
mysql> slave stop;
mysql> change master to master_host=’192.168.1.124′, master_user=’back’, master_password=’back’, master_log_file=’mysql-bin.000013′, master_log_pos=98;
mysql> slave start;

其实也就是A->B单向同步的反向操作!双向同步,就这么简单啦!

提示:如果修改了主服务器的配置,记得删除从服务器上的master.info文件。否则从服务器使用的还是老配置,可能会导致错误。
———————————————————————————–
注意:关于要复制多个数据库时,binlog-do-db和replicate-do-db选项的设置,网上很多人说是用半角逗号分隔,经过测试,这样的说法是错误的,MySQL官方文档也明确指出,如果要备份多个数据库,只要重复设置相应选项就可以了。
比如:
binlog-do-db=a
binlog-do-db=b
replicate-do-db=a
replicate-do-db=b

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1960911.html

(0)
上一篇 2025年2月23日 05:06:32
下一篇 2025年2月23日 05:06:49

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 记录 慢SQL优化实战

    sql教程介绍sql慢查询的优化 推荐(免费):sql教程 一、存在问题 经过sql慢查询的优化,我们系统中发现了以下几种类型的问题: 1.未建索引:整张表没有建索引;2.索引未命中:有索引,但是部分查询条件下索引未命中;3.搜索了额外的非…

    2025年2月23日 数据库
    100
  • 解决 SQL 问题绝对能让你对 MySQL 的理解更进一步!

    sql教程栏目介绍如何更有效理解mysql 推荐(免费):SQL教程 属性表(product_props)结构如下 数据量800W以上 字段名 类型 说明 idintidpn_idint属性类型pv_idint属性值product_idin…

    2025年2月23日 数据库
    100
  • 因为一条sql语句产生了自我怀疑!

     故事是这样开始的 在一个月黑风高的夜晚 现场报过来,本该打到新服务的流量,又走到了老服务,老服务的功能不健全,很可能会让现场的用户不能支付。 需要说明一点的是,任何一个从老服务改造到新服务的时候,都不是完全把流量切过去,都需要经过一点时间…

    2025年2月23日
    100
  • 面试题:在日常工作中怎么做MySQL优化的?

    前言 MySQL常见的优化手段分为下面几个方面: SQL优化、设计优化,硬件优化等,其中每个大的方向中又包含多个小的优化点 下面我们具体来看看 SQL优化 此优化方案指的是通过优化 SQL 语句以及索引来提高 MySQL 数据库的运行效率,…

    2025年2月23日
    100
  • sql中不等于0怎么写

    在 SQL 中,判断一个值是否不等于 0,可以使用不等号运算符 !=,语法为:expression != 0。例如,查找所有不等于 0 的记录时,可以使用 SELECT * FROM table_name WHERE column_name…

    2025年2月23日
    100
  • win7怎么安装mysql数据库

    要在 Windows 7 上安装 MySQL 数据库,请按以下步骤操作:从 MySQL 官网下载适用于您系统架构的安装程序。双击安装程序以启动向导。选择“Custom”安装类型。在“Type and Networking”中选择“Devel…

    2025年2月23日
    100
  • mysql中删除表的语句

    MySQL 中删除表的语句是:DROP TABLE table_name; 它将永久删除表及其数据,注意操作不可逆。此语句不适用于视图或临时表,应分别使用 DROP VIEW 和 DROP TEMPORARY TABLE 语句。 MySQL…

    2025年2月23日
    100
  • mysql中删除一个表的命令

    MySQL 中删除表命令:DROP TABLE。语法:DROP TABLE table_name。用法:1. 连接数据库;2. 输入命令:DROP TABLE table_name;3. 执行命令。注意:删除前需删除表中数据;删除后数据将永…

    2025年2月23日
    100
  • unique在mysql中是什么意思

    MySQL中的unique约束确保列或列组中的值唯一,防止重复值,通过创建索引实现,可增强数据完整性、查询优化和数据一致性。 unique在MySQL中的含义 unique是MySQL中的一项约束,用于确保表中某一列或一组列中的值是唯一的。…

    2025年2月23日
    100
  • mysql中use的作用

    MySQL 的 USE 命令用于在会话中选择要使用的数据库,将后续查询和操作应用于指定的数据库。 MySQL 中 USE 命令的作用 简介USE 命令在 MySQL 中用于选择要使用的数据库。它告诉 MySQL 将后续查询和操作应用于指定的…

    2025年2月23日
    100

发表回复

登录后才能评论