mysql在线复制_mysql的两种复制模式

mysql的复制术语

扩展的方式:

Scale up

Scale Out

复制:

向外扩展

二进制日志

单向

复制功用:

数据分布

负载均衡:读操作,适用于读密集型的应用

备份

高可用和故障切换

MySQL升级测试

主从复制:

从服务器:

I/O线程:从master请求二进制日志信息,并保存至中继日志;

SQL线程:从relay log中读取日志信息,在本地完成重放;

异步模式:async

1、从服务器落后于主服务器;

2、主从数据不一致;

二进制日志的格式:SET datetime = now()

1、基于行

2、基于语句

3、混合

双主:

读:负载均衡

写:无法均衡

Perlcona-Galera Cluster

配置过程:

1、master

(1) 启用二进制日志;

(2) 设置一个在当前集群中惟一的server-id;

(3) 创建一个有复制权限(REPLICATION SLAVE, REPLICATION CLIENT)账号;

2、slave

(1) 启用中继日志;

(2) 设置一个在当前集群中惟一的server-id;

(3) 使用有复制权限用户账号连接至主服务器,并启动复制线程;

传统上:一主多从,但一从一主;

而今:一从多主;

服务器程序版本:最好相同;从高;

一、mysql的复制,主从模式

1.主服务器启动二进制日志,编辑/etc/my.cnf在其中增加如下两行内容

server-id=1 mysqld的id号

log-bin=/var/lib/mysql/mysql-bin 指明二进制日志的文件名,和路径

innodb-file-per-table=1

23c452866c6bc146f7be2def2b542729.png

2.主服务器创建一个有复制权限(REPLICATION SLAVE, REPLICATION CLIENT)账号

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO

'repluser'@'192.168.%.%' IDENTIFIED BY 'replpass';

95257286fe016641d7e577a092816491.png

3.从服务器启动中继日志,编辑/etc/my.cnf在其中增加如下四行内容

server-id=2

relay-log=/var/lib/mysql/relay-log

relay-log-index=relay-log.index

innodb-file-per-table=1

c3bc1fc57affb59bbd2a7a0003752d64.png

4.从服务器配置从服务功能,首先查看主服务器的二进制pos位置

CHANGE MASTER TO MASTER_HOST='192.168.130.128',MASTER_USER='repluser',

MASTER_PMASTER_PASSWORD='replpass',

MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=187;

ce2c905f2025072939797ef2dfcce4c0.png

5.查看从服务器状态,开启IO与mysql进程,开启后就可以在线复制了

SHOW SLAVE STATUS\G 查看状态

START SLAVE 开启进展

f1d097a399c9fafd13e770a9b43a8ebe.png

d93776785cdc0940a4da0ca1cbe1b2fb.png

6.效果展示,在主服务器中创建一个库CREATE DATABASE mydb2;

在从服务器中查看SLAVE 状态,可以看到从服务器已经读取

到pos=272的位置,证明从服务器可以复制

a01c80131ef96828b28d203cded9e766.png

7.作为从服务器,应该不允许被写入数据,即限制从服务器只读

a.在从服务器启动read_only;但仅对非具有SUPER权限的用户有效;

b.阻止所有用户 :MariaDB> FLUSH TABLES WITH READ LOCK;

8.保证复制事务安全

在master节点启用参数:

sync_binlog = on 将内存中的二进制同步到硬盘

如果用到的为InnoDB存储引擎:

innodb_flush_logs_at_trx_commit

innodb_support_xa=on

在slave节点:

skip_slave_start 不让slave线程自动启动,需手动启动

二、mysql的复制,双主模式

双主:

读:负载均衡

写:无法均衡

互为主从:

1.数据不一致;

2.自动增长id

定义一个节点使用奇数id

auto_increment_offset=1

auto_increment_increment=2

定义另一个节点使用偶数id

auto_increment_offset=2

auto_increment_increment=2

(1) 各自使用不同的server id

(2) 都启用binlog和relay log

(3) 定义自动增长的id字段的增长方式

(4) 都授权有复制权限的用户账号

(5) 各自把对方指定为主服务器

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO

'repluser'@'172.16.%.%' IDENTIFIED BY 'replpass';

3.在上面的基础上,两台主机的配置文件/etc/my.cnf

192.168.130.128

配置:server-id=1

log-bin=/var/lib/mysql/mysql-bin

relay-log=/var/lib/mysql/relay-log

relay-log-index=relay-log.index

innodb-file-per-table=1

auto_increment_offset=1

auto_increment_increment=2

192.168.130.129

配置:server-id=5

log-bin=/var/lib/mysql/mysql-bin

relay-log=/var/lib/mysql/relay-log

relay-log-index=relay-log.index

innodb-file-per-table=1

auto_increment_offset=2

auto_increment_increment=2

764b764fa81ea121a4c2ba0963220c98.png

2f70882819a5fb7b06f810c055489eb6.png

4.在每个主机的mysqld上都创建一个有复制权限的用户

192.168.130.128

配置:

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO

'repluser'@'192.168.%.%' IDENTIFIED BY 'replpass';

192.168.130.128

配置:

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO

'repluser'@'192.168.%.%' IDENTIFIED BY 'replpass';

5.查看每个主机的二进制日志pos位置,然后按照该位置,启动每个主机的slave服务

192.168.130.128

配置:

CHANGE MASTER TO MASTER_HOST='192.168.130.129',

MASTER_USER='repluser',MASTER_PASSWORD='replpass',

MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=288;

192.168.130.12

配置:

CHANGE MASTER TO MASTER_HOST='192.168.130.128',

MASTER_USER='repluser',MASTER_PASSWORD='replpass',

MASTER_LOG_FILE='mysql-bin.000005',MASTER_LOG_POS=106;

8b8e121e4b0a361e1001e1a69f1d678a.png

023079d9b513d12e1b82f392f2226aa5.png

6.用START SLAVE;开启两台机的slave功能便可完成双主模型

7.效果展示

当128主机创建一个库时129的读取进度见图,

当129主机创建一个库时128的读取进度见图,

1ec0a58cb8cbad098311b1494b170a7b.png

791e4ce5db441e43148572469f6b1e6d.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值