mysql备份

Mysql主从复制与主主复制

1.环境说明
两台linux虚拟主机

Linux版本CentOS6.5、MySQL 5.7.22

ip:192.168.163.9 (主)、192.168.163.10 (从)

  1. 主从复制
    2.1安装mysql2.2 修改配置文件(my.cnf)
    注意:在配置socket文件的目录时,客户端和服务端都要进行配置

开启二进制日志

log_bin=/home/hadoop/apps/mysql/mysqllog/3306/binlog/mysql-bin

二进制日志必须开启,因为数据的同步实质上就是其他的MySQL数据库服务器将这个数据变更的二进制日志在本机上再执行一遍。

2.3主从复制构建
2.3.1 创建用户

在192.168. 163.9中创建一个192.168.163.10主机中可以登录的MySQL用户

用户:hds_admin

密码:hds_admin

mysql>grant replication slave on . to ‘hds_admin’@’192.168.163.10’ identified by ‘hds_admin’;

mysql> flush privileges;

2.3.2 查看主服务器二进制文件名与位置

mysql>SHOW MASTER STATUS;

这里写图片描述
2.3.3 告知二进制文件名与位置

在192.168.163.10(从)中执行:

2.3.3.1关闭slave服务:

mysql> stop slave;

2.3.3.2同步主机信息:

mysql> CHANGE MASTER TO

-> MASTER_HOST='192.168.163.10',

-> MASTER_USER='hds',

-> MASTER_PASSWORD='hds_admin',

-> MASTER_LOG_FILE='mysql-bin.000006',

-> MASTER_LOG_POS=597;

这里写图片描述

2.4测试主从复制
在192.168.163.10(从)服务器运行

2.4.1 配置查看

mysql> start slave;

mysql>SHOW SLAVE STATUS\G #查看主从复制是否配置成功

(1)常见错误

这里写图片描述

以上不配置不成功的,原因可能有三:

1、网络不通

2、密码不对

3、pos不对

经过检查,用户名写成了数据库名

(2)Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

这里写图片描述

原因:上面报错说的是replication架构中需要保证每个mysql实例UUID(UUID保存在datadir目录下的auto.cnf文件中)唯一,就跟server_id一样需要保证主从架构中所有mysql实例server_id唯一。

之所以出现会出现这样的问题,是因为我的从库主机是克隆的主库所在的主机,所以auto.cnf文件中保存的UUID会出现重复(server_id已经在my.cnf文件中修改过)

解决方法:停掉备库实例,删除备库的auto.cnf文件,启动备库实例,此时备库就会产生一个新的auto.cnf文件(产生新的UUID)

配置成功标志

这里写图片描述
2.4.2 实际数据测试

2.4.2.1未实现主从复制原因

1、SHOW SLAVE STATUS\G报错

Last_Errno: 1008
Last_Error: Error ‘Can’t drop database ‘just’; database doesn’t exist’ on query. Default database: ‘just’. Query: ‘drop database just’

原因:如果主从环境删除要先在主库删除,不要在从库做删除,不然SQL线程永远识别不了

解决方法:

stop slave;

create database jishibang;

start slave;

show slave status;

缺点:主从复制只能在主数据库上进行数据的修改,从数据库相当于主数据库的一个数据备份。

3.主主复制
192.168.163.11 192.168.163.12

主主复制即在两台MySQL主机内都可以变更数据,而且另外一台主机也会做出相应的变更。

3.1安装mysql3.2 修改配置文件
192.168.163.11

server-id=11 #任意自然数n,只要保证两台MySQL主机不重复就可以了。

log-bin=mysql-bin #开启二进制日志

auto_increment_increment=2 #步进值auto_imcrement。一般有n台主MySQL就填n

auto_increment_offset=1 #起始值。一般填第n台主MySQL。此时为第一台主MySQL

binlog-ignore=mysql #忽略mysql库【我一般都不写】

binlog-ignore=information_schema #忽略information_schema库【我一般都不写】

replicate-do-db=aa #要同步的数据库,默认所有库

192.168.163.12

server-id=12

log-bin=mysql-bin

auto_increment_increment=2

auto_increment_offset=2

replicate-do-db=aa

配置好后重启数据库

3.3构建主主复制
就是在两个服务器上双向配置主从复制;

3.4测试主主复制
分别开启start slave;

mysql>SHOW SLAVE STATUS\G #查看主从复制是否配置成功

当看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明状态正常

测试:在192.168.163.11上面执行

mysql>use hds;

mysql>create table tab1(id int auto_increment,name varchar(10),primary key(id));

mysql>insert into tab1 (name) values (‘zhao1’);

登录192.168.163.12查看

mysql>use hds;

mysql>show tables;

mysql>select * from tab1;

3.5说明
主主复制配置文件中auto_increment_increment和auto_increment_offset只能保证主键不重复,却不能保证主键有序。

4.主从复制与主主复制的区别
最大区别是 主从是对主操作数据,从会实时同步数据。反之对从操作,主不会同步数据,还有可能造成数据紊乱,导致主从失效。 主主则是无论对那一台操作,另一个都会同步数据。一般用作高容灾方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值