Mysql双主如何配置
前言
特点:在双主配置中,两台mysql互为主从节点。节点A和节点B互为主节点。
安装mysql步骤略过
一、mysql配置文件
(1)节点A配置
# 设置server-id,两节点必须不一样 server-id = 100 # 开启bin_log,模式为ROW,允许最大日志为1G log_bin = mysql-bin binlog_format = ROW max_binlog_size = 1024M # mysql5.7的版本不需要配置log-slave-updates=1 # log-slave-updates = 1 # 实现数据库宕机恢复后,自动同步缺少的数据 relay_log = mysql-relay-bin # 设置自增ID初始值为2,每次自增量为2。即都是偶数2,4,6,8,... auto_increment_offset = 2 auto_increment_increment = 2 # 开启gtid gtid_mode = ON enforce_gtid_consistency = 1 # 忽略不需要同步的schema replicate-ignore-db = mysql replicate-ignore-db = information_schema replicate-ignore-db = performance_schema replicate-ignore-db = sys
(2)节点B配置
只列出了与节点A不同的配置
# 设置server-id,两节点必须不一样 server-id = 200 # 设置自增ID初始值为1,每次自增量为2。即都是奇数1,3,5,7,... auto_increment_offset = 1 auto_increment_increment = 2
二、配置节点A为节点B的master(主从模式)
节点A为master,节点B为slave。
(1)登录节点A,创建slave(节点B)使用的账号。
# 在节点A上创建账号repl_user,允许从任意IP访问,密码为slave@100, grant replication slave on *.* to 'repl_user'@'%' identified by 'slave@100'; flush privileges;
(2)查看节点A的master信息
如下图所属,节点A的bin_log日志为mysql-bin.000001,位置是154
# 清空master信息。初次配置可以使用,若已运行了同步,切记不要使用! reset master; # 查看master信息 show master status; +------------------+----------+--------------+------------------+---------------------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+---------------------------------------------+ | mysql-bin.000001 | 154 | | | c2cf218e-2317-11ec-a36f-5cf9dd4fd6a8:1-5 | +------------------+----------+--------------+------------------+---------------------------------------------+
(3)登录节点B,设置节点B的master为节点A
# 停止节点B上的slave stop slave; # 将节点B的master设为节点A,以下的配置信息均表示节点A # MASTER_LOG_FILE和MASTER_LOG_POS,是在第(2)步中查看节点A的master信息 CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=3307, MASTER_USER='repl_user', MASTER_PASSWORD='slave@100', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; # 开启节点B上的slave start slave;
(4)确认节点B的slave是否运行成功。当返回的结果中,Slave_IO_Running和Slave_SQL_Running都为YES时,表示成功。如果为NO或Connecting时,请在mysql的data目录中查看.err结尾的日志文件,找出[ERROR]级别的日志查看。通常,初次配置问题主要由my.ini配置或同步账号创建问题引起。
# 在节点B中查看slave状态 show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 127.0.0.1 Master_User: repl_user Master_Port: 3307 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 2207 Relay_Log_File: mysql-relay-bin.000002 Relay_Log_Pos: 1143 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes ......
(5)若slave配置出现异常,可使用以下语句重置
reset slave all;
三、完成双主配置
此时,已成功配置了节点A与节点B的主从模式,即节点A是节点B的master。接下来重复步骤三的操作,但是节点A、B的操作要颠倒过来,即在节点B上创建同步账号,查看master信息,在节点A上设置节点B为master。配置完成后,同样查看节点A的slave状态,Slave_IO_Running和Slave_SQL_Running是否都为YES。
四、测试
在节点A添加、删除schema或表或数据,在节点B中查看是否有正确同步。
测试在节点A和节点B上,添加的自增主键数据是否与配置文件相符。一个为奇数,一个为偶数。增加或删除数据,主键是否会出现冲突的情况。
五、控制同步的库或表
通过修改my.ini实现
(1)在master端控制
binlog-do-db binlog日志记录的数据库(多数据库用,隔开)
binlog-ignore-db binlog日志中忽略数据库(多数据库用,隔开)
只有在binlog中记录的表,才能同步给从库
# binlog中记录这两个表 binlog-do-db=db_1,db_2 # binlog中不记录这两个表 binlog-ignore-db=db_3,db_4
(2)在slave端控制
replicate-do-db 设定需要复制的数据库
replicate-ignore-db 设定需要忽略的复制数据库
replicate-do-table 设定需要复制的表
replicate-ignore-table 设定需要忽略的复制表
replicate-wild-do-table 同replication-do-table功能一样,可以通配符
replicate-wild-ignore-table 同replication-ignore-table功能一样,可以加通配符
注:忽略的配置里,在从库的relaylog中仍有信息,只是没有执行同步。
# 执行同步的库 replicate-do-db=db_1 replicate-do-db=db_2 # 忽略同步的库 replicate-ignore-db=db_3 # 执行同步的表 replicate-do-table=db_1.table_a replicate-do-table=db_2.table_b # 忽略同步的表 replicate-ignore-table=db_2.table_c # 只复制哪个库的哪个表 replicate-wild-do-table=db_4.% # 忽略哪个库的哪个表 replicate-wild-ignore-table=mysql.%
六、一个账号多个IP
当一台mysql作为主节点,N台作为从节点时,如果每个从节点都添加一个账号会非常繁琐。可以在主节点中创建一个账户,并将多个IP地址与此账户相关联,以减少需要添加的账户数目。
具体做法是,将创建账号的语句执行多次,每次的IP不同即可。
# 创建一个账号名,为此账号设置多个ip grant replication slave on *.* to 'repl_user'@'192.168.5.10' identified by 'slave@100'; grant replication slave on *.* to 'repl_user'@'192.168.5.20' identified by 'slave@100'; FLUSH PRIVILEGES
以上是Mysql双主如何配置的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

MySQL是一种开源的关系型数据库管理系统,主要用于快速、可靠地存储和检索数据。其工作原理包括客户端请求、查询解析、执行查询和返回结果。使用示例包括创建表、插入和查询数据,以及高级功能如JOIN操作。常见错误涉及SQL语法、数据类型和权限问题,优化建议包括使用索引、优化查询和分表分区。

可以通过以下步骤打开 phpMyAdmin:1. 登录网站控制面板;2. 找到并点击 phpMyAdmin 图标;3. 输入 MySQL 凭据;4. 点击 "登录"。

MySQL在数据库和编程中的地位非常重要,它是一个开源的关系型数据库管理系统,广泛应用于各种应用场景。1)MySQL提供高效的数据存储、组织和检索功能,支持Web、移动和企业级系统。2)它使用客户端-服务器架构,支持多种存储引擎和索引优化。3)基本用法包括创建表和插入数据,高级用法涉及多表JOIN和复杂查询。4)常见问题如SQL语法错误和性能问题可以通过EXPLAIN命令和慢查询日志调试。5)性能优化方法包括合理使用索引、优化查询和使用缓存,最佳实践包括使用事务和PreparedStatemen

选择MySQL的原因是其性能、可靠性、易用性和社区支持。1.MySQL提供高效的数据存储和检索功能,支持多种数据类型和高级查询操作。2.采用客户端-服务器架构和多种存储引擎,支持事务和查询优化。3.易于使用,支持多种操作系统和编程语言。4.拥有强大的社区支持,提供丰富的资源和解决方案。

Apache 连接数据库需要以下步骤:安装数据库驱动程序。配置 web.xml 文件以创建连接池。创建 JDBC 数据源,指定连接设置。从 Java 代码中使用 JDBC API 访问数据库,包括获取连接、创建语句、绑定参数、执行查询或更新以及处理结果。

在 Docker 中启动 MySQL 的过程包含以下步骤:拉取 MySQL 镜像创建并启动容器,设置根用户密码并映射端口验证连接创建数据库和用户授予对数据库的所有权限

MySQL在Web应用中的主要作用是存储和管理数据。1.MySQL高效处理用户信息、产品目录和交易记录等数据。2.通过SQL查询,开发者能从数据库提取信息生成动态内容。3.MySQL基于客户端-服务器模型工作,确保查询速度可接受。

优雅安装 MySQL 的关键在于添加 MySQL 官方仓库。具体步骤如下:下载 MySQL 官方 GPG 密钥,防止钓鱼攻击。添加 MySQL 仓库文件:rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm更新 yum 仓库缓存:yum update安装 MySQL:yum install mysql-server启动 MySQL 服务:systemctl start mysqld设置开机自启动
