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,保证时间的一致
配置完重启才能生效
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、首先配置两台主机的名字(以下两种方法都可以)
主服务器
从服务器
2、将主库数据备份,首先配置数据库密码,我采用跳过授权方式:进入vim /etc/my.cnf中,写下图中的句子
进入配置文件将刚插入的那行注释掉如:
重启mysqld 服务,重设数据库密码(我设的是Www1.baidu.com)注意:密码必须包含字母、特殊符号、大小写,或数字,只要不出现erro,出现waring警告也没事。 说明你设的密码可用
测试一下
接下来要将数据库备份以便给从服务器配置相同的环境,我想把数据库备份到/backup下所以我新建文件夹,再给他权限如:
备份后一定要进去看看文件是否完整(看着不是几行的那种一般都没什么问题)
将主库拷贝好的数据库再拷贝到从服务器,从服务器上看一下也收到了
3、从服务器上也进行主服务器的步骤
为了方便我把从服务器密码也设置成Www1.baidu.com
重启mysqld服务 systenctl restart mysqld
将从主服务器拷贝过来的数据库导入到从服务器
4、主库给从库授权
主库授权
从库登录测试
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
注释:每个主机都需要有id号 ,范围是1-65535,是什么数字都可以,但需要保证主从不冲突
再新建个文件夹/backup/master 并给权限如图:
重启服务检测一下,产生日志文件
查看日志位置和状态
6、配置从服务器
修改配置文件
[root@slave ~]# vim /etc/my.cnf
[mysqld]
server_id=130
[root@slave ~]# systemctl restart mysqld
7、查看slave状态
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;
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就说明配置成功了!