mysql 架构篇系列 2复制架构一主一从搭建(异步复制)

一.环境准备1.1主库环境(172.168.18.201)环境说明查看脚本操作系统版本CentOSLinuxrelease7.4.1708(Core)cat/etc/redhat-release操作系统用户名和密码rootjs*2015IP地址172.168.18.201ipaddr网关Gateway172.168.18.1cat/etc/sysconfig/network-scriptsDNS1...

mysql 架构篇系列 2复制架构一主一从搭建(异步复制)

一. 环境准备

  1.1 主库环境(172.168.18.201)

环境

说明

查看脚本

操作系统版本

CentOS Linux release 7.4.1708 (Core)

cat /etc/redhat-release

操作系统用户名和密码

root js*2015

IP地址

172.168.18.201

ip addr

网关Gateway

172.168.18.1

cat /etc/sysconfig/network-scripts

DNS

172.168.16.11

mysql 版本

Distrib 5.7.23

mysql --help | grep Distrib

或者select version();

mysql 用户名和密码

root 123456

mysql 端口

3306

grep mysql /etc/services

或者HOW GLOBAL VARIABLES LIKE 'port'

  1.2 从库环境(172.168.18.203)

环境

说明

操作系统版本

CentOS Linux release 7.4.1708 (Core)

操作系统用户名和密码

root js*2015

IP地址

172.168.18.203

网关Gateway

172.168.18.1

DNS

172.168.16.11

mysql 版本

Distrib 5.7.20

mysql 用户名和密码

root js*2015%

(后面主库数据还原到从库后,密码跟主库的一样“123456”)

Mysql 端口

3306

  1.3主库是用二进制安装,从库是用RPM安装,下面是查看的不同命令,脚本如下所示:

-- 主库启动mysql服务service mysql start-- 主库连接到mysql命令mysql -uroot -p123456 -- 主库查看mysql是否启动service mysql  status-- 从库启动 mysql服务 systemctl  start mysqld-- 从库连接到mysql命令mysql -uroot -p js*2015%-- 从库查看mysql是否启动systemctl  status  mysqld

  1.4 其它
    (1) 主从服务器相互接通对方ip。 例如在主库上拼: ping 172.168.18.203。
    (2) 使用telnet 拼通对方mysql端口。例如在从库上拼: telnet 172.168.18.201 3306

二. 异步复制搭建(主库)

  主从复制配置步骤比较简单,下面详细介绍,确保主从库上安装了相同版本的数据库,因为复制的功能在持续的改进中。这里一个是5.7.23,一个是5.7.20。二个相近的版本(最好是一个版本)。

  2.1 在主库上,设置一个复制使用的mysql账户,并授予replication slave 权限,创建主库复制用户rep1。(注意:需要把'rep1'@'172.168.18.201' 改成 'rep1'@'%' 在文章最后,测试复制是否成功会讲到)

-- 172.168.18.201 主库 创建rep1 用户GRANT REPLICATION SLAVE ON *.* TO 'rep1'@'172.168.18.201'  IDENTIFIED BY '123456'

  

  2.2 在主库上修改服务器配置文件my.cnf, 开启binlog, 并设置server-id的值,之后重启数据库服务生效。开启binlog日志,详细说明在:mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具) 中讲到,my.cnf配置如下:

[mysqld]server-id=1log-bin=/var/lib/mysql/mysql-bin

  2.3 在主库上,设置读锁定,这个操作为了确保没有数据库操作,以便获得一个一致性的快照。

 -- 锁住当前主库, 其它会话增删改等修改操作将会阻塞FLUSH TABLES WITH READ LOCK;

  2.4 得到主库当前的二进制日志名和偏移量值,这个操作是为了在从库上启动以后,从这个点开始进行数据的恢复

 SHOW MASTER STATUS

  2.5 现在主数据库已经停止更新操作了,需要生成主数据库的备份,备份可以直接在操作系统下复制全部的数据到从库服务器上,也可以通过mysqldump或xtrabackup 工具进行数据库备份。下面使用xtrabackup来克隆到slave。下面在主库上进行备份。

-- 先删除以前历史备份[root@hsr base]# rm -rf /data/backups/base -- 完整备份
[root@hsr base]# xtrabackup --host=127.0.0.1 --user bkpuser --password=123456 --backup --target-dir=/data/backups/base


  2.6 备份结束后,恢复主库写操作

UNLOCK TABLES;

  2.7 将备份文件复制到从库上

    可以使用rsync命令来实现文件拷贝,我这里简单起见使用xtfp来传送文件。同样在从库上也建相同的目录,主库数据文件拷贝到从库目录后,如下图所示

三. 异步复制搭建(从库)

  3.1 数据还原,使主库和从库的数据库和表保持一致,从库是一个相同的副本

    在从库上安装好xtrabackup工具,配置好mysql备份用户,脚本如下,可参照:mysql 开发进阶篇系列 45 物理备份与恢复(xtrabackup 安装,用户权限,配置)

(1) -- 从库 203配置mysql备份用户脚本如下CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY '12345678';GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';GRANT PROCESS,SUPER ON *.* TO 'bkpuser'@'localhost';(2) -- 数据还原到从库,从库data目录是 /var/lib/mysql,按下面脚本顺序操作--
源文地址:https://www.guoxiongfei.cn/cntech/2713.html