前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Centos7+Mysql8双机热备(主-主复制HA) 操作说明

Centos7+Mysql8双机热备(主-主复制HA) 操作说明

作者头像
庞小明
发布2020-05-26 21:50:19
2.1K0
发布2020-05-26 21:50:19
举报
文章被收录于专栏:pangguomingpangguoming

Centos7+Mysql8双机热备(主-主复制HA) 操作说明

庞国明,2018-09-13

1.1 操作前的准备

  1. 两台服务器,并同时按照Centos7.3新装版本(必须装相同版本);
  2. 如果有外网链接则配置Centos7联网、安装wget工具,如果没有外网链接则跳到 “1.2 centos7下安装mysql”;

配置Centos7 联网

新装Centos7默认联网是关闭的,可以通过以下步骤设置开机联网

第一步:[root@localhost ~]# cd /etc/sysconfig/network-scripts/

第二步:[root@localhost ~]# ls

这时候你会发现没有教程上说的ifcfg-eth0文件,打开第一个即可。

有的教程找不到就新建一个,肯定是错的。

第三步:[root@localhost ~]# vi ifcfg-eno167777736

第四步:修改ONBOOT为yes 保存退出(参考vi使用方法)

第五步:[root@localhost ~]# service network restart

Centos7 下安装wget

本次操作采用Centos 的yum源安装,需要先下载rpm包,因此我们需要先安装wget下载工具

[root@localhost ~]# yum install wget

安装期间会提示确认提示,输入y 确认安装即可。

1.2 Centos7 下安装MySQL 8

注意:两台服务器上必须安装相同版本的mysql

第一步:查看是否有旧版本,如果有就删除

检查旧版本,命令

rpm -qa|grep mariadb

rpm -qa|grep mysql

列出所有被安装的rpm package ,命令

rpm -qa | grep mariadb

卸载,命令

rpm -e mariadb-libs-5.5.52-1.el7.x86_64

如果出现错误:依赖检测失败:

libmysqlclient.so.18()(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要

libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要

解决办法为强制卸载,因为没有--nodeps

rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64

第二步:下载并安装MySQL

有外网链接情况下安装MySQL8:

下载并安装MySQL官方的 Yum Repository

[root@localhost ~]# wget -i -c https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

使用上面的命令就直接下载了安装用的Yum Repository,然后就可以直接yum安装了。

[root@localhost ~]# yum -y install mysql80-community-release-el7-1.noarch.rpm

之后就开始安装MySQL服务器。

[root@localhost ~]# yum -y install mysql-community-server

直到提示 install complete mysql安装完毕

无外网连接情况下通过安装包安装MySQL8

创建目录启动之前,不然会报错,启动失败

mkdir -p /usr/local/mysql/var

解压安装包

tar -xvf mysql-8.0.12-1.el7.x86_64.rpm-bundle.tar

rpm -ivh net-tools-2.0-0.22.20131004git.el7.x86_64.rpm

安装msyql

rpm -ivh mysql-community-common-8.0.12-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-8.0.12-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-8.0.12-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-8.0.12-1.el7.x86_64.rpm

卸载顺序

rpm -e mysql-community-server-8.0.12-1.el7.x86_64

rpm -e mysql-community-client-8.0.12-1.el7.x86_64

rpm -e mysql-community-libs-8.0.12-1.el7.x86_64

rpm -e mysql-community-common-8.0.12-1.el7.x86_64

复制my.cnf文件至/etc/

rm -rf /etc/my.cnf

cp my.cnf /etc/

初始化系统

mysqld --initialize-insecure --user=mysql

第三步:启动MySQL

[root@localhost ~]# systemctl start mysqld.service

查看MySQL运行状态,运行状态如图:

[root@localhost ~]# systemctl status mysqld.service

第四步:Mysql初始化配置

获取初始密码登录mysql

mysql在安装后会创建一个root@locahost账户,并且把初始的密码放到了/var/log/mysqld.log文件中;

[root@localhost ~]# cat /var/log/mysqld.log | grep password

使用初始密码登录mysql

mysql -u root -p

修改初始密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

如果想要设置简单密码(如abc、123),根据mysql8默认密码策略是不允许的,可以修改默认密码策略,来达到此目的

set global validate_password.policy=0;

set global validate_password.length=4;

1.3 防火墙、iptable设置

因为 mysql 双机热备需要相互远程访问mysql服务器,因此需要两台服务器都开放3306端口,或者直接关闭防火墙。

关闭防火墙:systemctl stop firwalld

禁止防火墙开机启动:systemctl disable firealld

防火墙开放3306端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent

防火墙重新载入设置:firewall-cmd --reload

1.4 双机热备份(主-主复制HA集群)配置

首先保证两台服务器mysql版本一致,同时防火墙都对3306开放

当前环境:

A服务器 ip:172.20.201.23 准备作为主服务器master

B服务器 ip: 172.20.201.24 用于备份的服务器slave

1.4.1 搭建 A—>B 的主从复制

1.4.1.1 操作步骤

在A服务器上操作

第一步:创建专门用于备份的 用户(登录mysql之后执行)

CREATE USER 'cp_user'@'172.20.201.24' IDENTIFIED WITH mysql_native_password BY 'master2018!';

GRANT REPLICATION SLAVE ON *.* TO 'cp_user'@'172.20.201.24';

(注意:这里的cp_user 和 master2018! 是一会儿备份服务器配置是需要用到的master服务器的用户名和密码,需要记下来)

第二步:修改 MySQL配置文件: /etc/my.cnf,添加如下内容:

log-bin=mysql-bin

binlog_format=mixed

server-id=1 //服务器唯一性标识符,每台服务器配置必须保存不一样

read-only=0

binlog-do-db=test_db//需要备份的那个数据库名叫 “test_db”(可选)

auto-increment-increment=2 //这里设置用来台服务器来做备份,按个人情况定

auto-increment-offset=1 //表示这台服务器序号,从1开始,不超auto-increment-increment

//配置完该数据库中插入第一个数据id=1,第二条数据id=3而不是2,避免的数据库集群中id冲突

第三步:修改完毕保存后,重新启动mysql

[root@localhost ~]# service mysqld restart

第四步:执行 mysql>show master status\G(看到下面信息)

mysql-bin.000002和154这两个值需要记得后面有用(刚安装完的数据库可能是mysql-bin.000001

到这master已经配置完成了,下面配置备份服务.

B服务器操作:

第一步:修改MySQL /etc/my.cnf 文件,添加如下内容:

log-bin=mysql-bin

binlog_format=mixed

server-id=2 //服务器唯一性标识符,每台服务器配置必须保存不一样

replicate-do-db=test_db //要同步的数据库名

relay-log=mysql.relay.bin

log-slave-updates=ON

第二步:配置完保存修改,重新启动mysql服务。

第三步:登录B服务器的mysql服务器:执行下面命令(配置同步的主服务器)

CHANGE MASTER TO

MASTER_HOST='172.20.201.23',

MASTER_USER='cp_user',

MASTER_PASSWORD='master2018!',

MASTER_LOG_FILE='mysql-bin.000020',

MASTER_LOG_POS=155;

第四步:重启B服务器的MySQL服务:service mysql restart

第五步:使用命令查看B服务器上mysql的slave运行情况,登陆mysql后,运行:

Show slave status\G

Last Error 为0 即可认为配置正确。

如果出现connection error 考虑关闭A服务器防火墙或清空iptables (iptables -F)

1.4.1.2 测试:

在A和B服务器上登陆MySQL运行如下脚本创建数据库test_db;

CREATE DATABASE IF NOT EXISTS test_db default charset utf8 COLLATE utf8_general_ci;

单独在A服务器上创建表,并插入数据

USE test_db;

CREATE TABLE user(

id int not null auto_increment,

user_name VARCHAR(50),

password VARCHAR(10) ,

name VARCHAR(50),

status VARCHAR(10) ,

constraint pk__person primary key(id)

);

INSERT INTO user (`user_name`,`password`,`name`,`status`) VALUES('admin','admin','admin','1');

到B服务器上test_db中查看是否同步了相同的表和数据

已同步,则配置A—>B 的主从复制完成

1.4.1.3 小结

至此,A—>B的主从复制搭建完毕

1.4.2 搭建 B—>A 的主从复制

1.4.2.1 操作步骤

实际就是步骤一的逆向操作。将B(192.168.62.129)作为主服务器,A(192.168.62.130)作为从服务器。步骤基本和上面一样。 其中 A、B服务器的\etc\my.cnf配置文件 继续追加 主从配置内容即可。

1、在B中创建备份用户

CREATE USER 'cp_user'@'172.20.201.23' IDENTIFIED WITH mysql_native_password BY 'master2018!';

GRANT REPLICATION SLAVE ON *.* TO 'cp_user'@'172.20.201.23';

2、打开 /etc/my.cnf , 开启B的binarylog:

新增配置如下:

3、不需要导出B的初态同步到A上了,因为A和B的初态是一样的(步骤一实现的),查看master日志状态。

show master status\G

4、登录到A服务器开启中继relay_log

5、在A服务器上开启同步:

CHANGE MASTER TO

MASTER_HOST='172.20.201.24',

MASTER_USER='cp_user',

MASTER_PASSWORD='master2018!',

MASTER_LOG_FILE='mysql-bin.000017',

MASTER_LOG_POS=155;

host为B的IP地址,user、password是在B上创建的备份用户,log_file、log_pos是在B上看到的master状态信息。

6、在A上查看slave status.

如果IO进程和SQL进程都为YES,说明从B到A的同步成功。

1.4.2.2 测试

在A、B两台服务器中任意一台的MySQL test_db中添加数据另外一台都自动同步。

1.4.2.3 小结

至此,MySQL双机热互备配置完毕。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档