mysql 主从
修改 mysql-master1 的配置
1 | skip-name-resolve |
参数介绍
参数 | 说明 |
---|---|
skip-name-resolve | 选项可以禁用dns解析 |
server-id | 唯一标识主机,mysql主从每个mysql实例配置都不一样就行。这个值默认是0,如果是0,主服务器拒绝任何从服务器的连接。 |
log-bin | 开启二进制日志,该日志是在事务提交时写日志文件的。默认大小是1G,后面加001,002这样的后缀顺加。 |
sync_binlog | 表示每次事务提交,MySQL都会把binlog刷下去,是最安全但是性能损耗最大的设置。这样的话,在数据库所在的主机操作系统损坏或者突然掉电的情况下,系统才有可能丢失1个事务的数据。但是binlog虽然是顺序IO,设置为1会影响mysql数据服务器的性能 |
binlog_checksum | 不进行校验 |
binlog_format | binlog日志格式 |
log-slave-updates | 中继日志执行之后,这些变化是否需要计入自己的binarylog。 当你的B服务器需要作为另外一个服务器的主服务器的时候需要打开。 就是双主互相备份,或者多主循环备份 |
binlog-ignore-db | 指定不需要同步的数据库 |
expire_logs_days | binlog日志保持天数 |
重启mysql
1 | systemctl restart mysqld |
创建主从同步
登录master-1 操作
1 | # 创建同步账户 |
从服务器同步数据
1 | change master to master_host='172.21.17.52',master_user='xingxing',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=120; |
关闭主从同步
1 | # 停止主从 |
配置mysql 多主
前面做了mysql的主从同步,mysql多主就是在相互做同步,需要注意的是每台数据库服务器都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突。在上述的主从配置中增加如下配置
1 | # master-1 配置 |
参数介绍
参数 | 说明 |
---|---|
auto-increment-offset | 表示这台服务器的序号,从该值开始 |
auto-increment-increment | 服务器的数量 |
修改或创建账户授权
1 | # 所有mysql 服务器执行 |
查看下log bin日志和pos值位置
1 | # master-1 |
配置同步
1 | # mseter-1 同步操作 |
测试同步
在mster-1
1 | # 创建数据库 |
master-2 操作
1 | # 创建数据库 |
Keepalived 配置
Keepalived这里不进行阐述
mysql 高可用
利用mysql的多主,前方使用haproxy+Keepalived 来代理mysql,这里贴出haproxy里面mysql的配置,完成以后测试停掉一条mysql服务器。插入部分数据,然后在吧停掉的mysql启动,查看数据是否同步。停掉的同时验证是否连接可用。
1 | listen mysql_cluster |
验证
插入10000条数据,查看数据库同步状态。最后检查数据是否一致
1 |
|
注视:
mysql 同步参数binlog-ignore-db
这个参数一般我不添加,如果在数据库创建了账号密码,账号密码不同步,在做读写分离,双主切换的时候。高可用的时候,就会显得很麻烦及蛋疼。