最为一个后端 要具有学习精神 往全栈发展

今天安排了一个任务 实现数据库的主主复制,看了N多资料,现在总结一下

前期准备 2台服务器(我是一台wendows + 一台windoes镜像的虚拟机)

分别装上mysql数据库(ps:最好版本一致)

而且保证2台电脑可以ping通(如果不能ping通,关闭电脑防火墙)

安装好sql后,更改其配置文件:windows版本位置:C:\ProgramData\MySQL\MySQL Server 5.6

ps:配置文件一定是在ProgramData文件夹里面

(以下代码命令,皆在mysql命令里面执行)

计算机开始菜单,找到以下图标,点击即可

centos7 mysql主从复制配置 windows mysql主从复制_mysql主从复制

配置文件修改 my.ini (或者名为:my.cnf)

配置说明
 #[必须]服务器唯一ID,每台服务器需不同
 server-id = 1
 #[必须]启用二进制文件
 log-bin = /home/mysql/mysql-bin
 #[不是必须]二进制文件启用混合模式
 binlog_format = mixed
 #[不是必须]二进制文件过期时间,单位是天
 expire-logs-days = 14
 #[不是必须]当每进行1次事务提交之后,MySQL将进行一次磁盘同步指令来将binlog_cache中的数据强制写入磁盘
 sync-binlog = 1
 #[不是必须]只将对应的数据库变动写入二进制文件。如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项
 binlog-do-db = test,androidpnserver
 #[必须]不需要记录二进制日志的数据库。如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项。一般为了保证主主同步不冲突,会忽略mysql数据库。
 binlog-ignore-db = mysql,information_schema,performance_schema
 #[必须]做主主备份的时候,因为每台数据库服务器都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突。
 #解决这个问题的办法就是让每个数据库的自增主键不连续。上面两项说的是,假设需要将来可能需要10台服务器做备份,将auto-increment-increment设为10。而auto-increment-offset=1表示这台服务器的序号。从1开始,不超过auto-increment-increment。
 auto-increment-increment = 10
 auto-increment-offset = 1**

主数据库配置

**
添加信息添加在 [mysqld] 标签下
[mysqld]
 server-id=1
 log-bin = mysql-bin
 binlog-do-db = bd-ecxel
 binlog-ignore-db = mysql,information_schema,performance_schema
 auto-increment-increment = 10
 auto-increment-offset = 2**
次服务器配置
**
 [mysqld]
 server-id=2
 server-id=1
 log-bin = mysql-bin
 binlog-do-db = bd-ecxel
 binlog-ignore-db = mysql,information_schema,performance_schema
 auto-increment-increment = 10
 auto-increment-offset = 2
**
首先进行刷新,停止线程
 执行 stop slave;
 reset slave;
 flush privileges;

centos7 mysql主从复制配置 windows mysql主从复制_mysql主主复制_02


centos7 mysql主从复制配置 windows mysql主从复制_mysql_03


centos7 mysql主从复制配置 windows mysql主从复制_mysql_04

创建同步账号

**
格式

grant replication slave on *.* to '<userName>'@'<hostIp>' identified by '<passWord>';`

# userName     用户名,默认root
# passWord     用户密码(均为数据库账户,密码)
# hostIp          需要同步的主机IP,可以写%,表示全部

在2个数据库分别执行一次

grant replication slave on *.* to 'root'@'%' identified by 'Accp1234';

查看master状态

show master status;
# MASTER_LOG_FILE 和 MASTER_LOG_POS 注意这2个参数,后面需要用

使用change语句执行同步位置,(如果只做主从复制,主需要在主服务器执行一次即可)

CHANGE MASTER TO MASTER_HOST='10.10.2.74',MASTER_PORT=3306,MASTER_USER='root',MASTER_PASSWORD='Accp1234',MASTER_LOG_FILE='mysql-bin.000007',MASTER_LOG_POS=41352;

# MASTER_LOG_FILE 和 MASTER_LOG_POS 参数都是另一台服务通过<show master status;> 查询得到(重点)
# 分别对应 File和Position字段
# 两台服务器都要执行一遍(MASTER_LOG_FILE 和 MASTER_LOG_POS 参数,可能不一样,请注意)
# MASTER_HOST='10.10.2.74' 这个为对方Ip地址

启动slave

# 启动slaave
start slave;

查看slave状态

show slave status\G;

# 主要关注一下两个参数
# Slave_IO_Running: Yes 
# Slave_SQL_Running: Yes

如果参数都为YES,说明配置成功,

如果有错误,错误代码是2003,如下

centos7 mysql主从复制配置 windows mysql主从复制_mysql主从复制_05


直接百度搜索 错误代码信息 ,进行更改

(如果多台服务器是网络同传的,需要删除C:\ProgramData\MySQL\MySQL Server 5.6\data 下auto.cnf文件,在重启mysql服务)