Mysql复制技术-传统的AB复制

准备2台linux系统,保证两台服务器的mysql数据库都是刚初始化过的。AB复制中的A为主库,B为备库。备库找主库同步。

Master	主库			   		 Slave	备库

================================== IP 192.168.223.128 192.168.223.130 Server_ID 128 130

.注意事项,如下:

1.尽量保持主服务器和从服务器的服务版本一致(我这里都是5.7版本)

为了保险,先systemctl stop mysqld 然后rm -rf /var/lib/mysql/*

2.关闭iptables,关闭selinux,保证时间的一致

mysql复制表数据并生成新的雪花算法id_Mysql传统AB复制

mysql复制表数据并生成新的雪花算法id_服务器_02

mysql复制表数据并生成新的雪花算法id_mysql_03

配置完重启才能生效

3.设置主机名(方便区分主从)

4.master端开启binlog日志功能

5.主服务器正常的情况下,从服务器永远不要写入

6.主与从服务器的server id 不能相同

A主机: a.开启binlog日志 b.授权,允许B服务器下载日志c.修改主机名为master.uplooking.com,并做好解析

B主机: a.开启从机的配置b.修改主机名为slave.uplooking.com,并做好解析 c.保证从和主的数据库的数据一致(主服务器全备 从服务器恢复)

1、首先配置两台主机的名字(以下两种方法都可以)

mysql复制表数据并生成新的雪花算法id_Mysql传统AB复制_04

mysql复制表数据并生成新的雪花算法id_Mysql传统AB复制_05

主服务器

mysql复制表数据并生成新的雪花算法id_数据库_06

从服务器

mysql复制表数据并生成新的雪花算法id_mysql_07

mysql复制表数据并生成新的雪花算法id_Mysql传统AB复制_08

2、将主库数据备份,首先配置数据库密码,我采用跳过授权方式:进入vim /etc/my.cnf中,写下图中的句子

mysql复制表数据并生成新的雪花算法id_服务器_09

mysql复制表数据并生成新的雪花算法id_服务器_10

mysql复制表数据并生成新的雪花算法id_服务器_11

mysql复制表数据并生成新的雪花算法id_Mysql传统AB复制_12

mysql复制表数据并生成新的雪花算法id_mysql_13

进入配置文件将刚插入的那行注释掉如:

mysql复制表数据并生成新的雪花算法id_服务器_14

重启mysqld 服务,重设数据库密码(我设的是Www1.baidu.com)注意:密码必须包含字母、特殊符号、大小写,或数字,只要不出现erro,出现waring警告也没事。 说明你设的密码可用

mysql复制表数据并生成新的雪花算法id_Mysql传统AB复制_15

测试一下

mysql复制表数据并生成新的雪花算法id_服务器_16

接下来要将数据库备份以便给从服务器配置相同的环境,我想把数据库备份到/backup下所以我新建文件夹,再给他权限如:

mysql复制表数据并生成新的雪花算法id_服务器_17

备份后一定要进去看看文件是否完整(看着不是几行的那种一般都没什么问题)

mysql复制表数据并生成新的雪花算法id_mysql_18

mysql复制表数据并生成新的雪花算法id_Mysql传统AB复制_19

将主库拷贝好的数据库再拷贝到从服务器,从服务器上看一下也收到了

mysql复制表数据并生成新的雪花算法id_mysql_20

3、从服务器上也进行主服务器的步骤

mysql复制表数据并生成新的雪花算法id_Mysql传统AB复制_21

mysql复制表数据并生成新的雪花算法id_服务器_22

mysql复制表数据并生成新的雪花算法id_mysql_23

为了方便我把从服务器密码也设置成Www1.baidu.com

mysql复制表数据并生成新的雪花算法id_mysql_24

mysql复制表数据并生成新的雪花算法id_服务器_25

mysql复制表数据并生成新的雪花算法id_数据库_26

重启mysqld服务 systenctl restart mysqld

mysql复制表数据并生成新的雪花算法id_服务器_27

将从主服务器拷贝过来的数据库导入到从服务器

mysql复制表数据并生成新的雪花算法id_数据库_28

4、主库给从库授权

主库授权

mysql复制表数据并生成新的雪花算法id_数据库_29

从库登录测试

mysql复制表数据并生成新的雪花算法id_数据库_30

5、配置主库

修改配置文件

[root@master ~]# vim /etc/my.cnf
 [mysqld]
 innodb_file_per_table=1
 server_id=128 #id号
 log_bin=/backup/master
 log_bin_index=/backup/master

mysql复制表数据并生成新的雪花算法id_Mysql传统AB复制_31

注释:每个主机都需要有id号 ,范围是1-65535,是什么数字都可以,但需要保证主从不冲突

再新建个文件夹/backup/master 并给权限如图:

mysql复制表数据并生成新的雪花算法id_数据库_32

重启服务检测一下,产生日志文件

mysql复制表数据并生成新的雪花算法id_mysql_33

查看日志位置和状态

mysql复制表数据并生成新的雪花算法id_Mysql传统AB复制_34

6、配置从服务器

修改配置文件

[root@slave ~]# vim /etc/my.cnf
 [mysqld]
 server_id=130

mysql复制表数据并生成新的雪花算法id_Mysql传统AB复制_35

[root@slave ~]# systemctl restart mysqld

7、查看slave状态

mysql复制表数据并生成新的雪花算法id_数据库_36

8、配置主从同步(看之前主服务的日志文件显示的是master.000001 positin=154)

mysql> change master to
 -> master_host=‘192.168.223.128’,
 -> master_user=‘slave’,
 -> master_password=‘Www1.baidu.com’,
 -> master_port=3306,
 -> master_log_file=‘master.000001’,
 -> master_log_pos=154;

mysql复制表数据并生成新的雪花算法id_mysql_37

mysql复制表数据并生成新的雪花算法id_Mysql传统AB复制_38

Connect_Retry: 60 重试时间

Master_Log_File: master.000001 日志文件

Read_Master_Log_Pos: 120 日志位置字符偏移量

Relay_Log_File: mysqlB-relay-bin.000002 中继日志

Relay_Log_Pos: 280 中继日志记录到哪里了

Relay_Master_Log_File: master.000001 日志文件

Slave_IO_Running: Yes 两个进程都正常

Slave_SQL_Running: Yes Yes就是读中继日志了

当出现两个Yes就说明配置成功了!