MariaDB用法——主从复制高可用

主从

在主节点实现

vim /etc/my.cnf

server_id=1

log_bin

innodb_file_per_table

MariaDB用法——主从复制高可用

 

重启服务后生成新的二进制日志,旧的可以删掉

systemctl restart mariadb

MariaDB用法——主从复制高可用

 

添加从服务器同步用户

mysql>grant replication slave on *.* to 用户名@'IP或网段' identified by '密码';

MariaDB用法——主从复制高可用

 

从节点

vim /etc/my.cnf

server_id=2

MariaDB用法——主从复制高可用

 

systemctl restart mariadb

添加主服务器

可以查看一下帮助

help change master to

change master to master_host='主服务器IP',master_user='在主服务器创建的用户名',master_p

assword='密码',master_port=端口,master_log_file='从哪个二进制文件同步',master_log_pos=具体位置

MariaDB用法——主从复制高可用

 

看下状态

MariaDB用法——主从复制高可用

MariaDB用法——主从复制高可用

 

开启复制

start slave

MariaDB用法——主从复制高可用

 

创建数据库,查看是否能同步

主服务器创建数据库

MariaDB用法——主从复制高可用

 

从服务器查看

MariaDB用法——主从复制高可用

主从复制

已有旧主,创建新从

创建从服务器该配置文件(参考上一实验,只改配置文件)

备份主服务器

mysqldump -A -F --single-transaction --master-data=1 > /backup/all.sql

scp /backup/all.sql 从节点:/

MariaDB用法——主从复制高可用

 

更改备份文件

MariaDB用法——主从复制高可用

导入备份文件

MariaDB用法——主从复制高可用

现在数据库还是不同步的,需要开始同步一下

MariaDB用法——主从复制高可用

start slave;

MariaDB用法——主从复制高可用

从服务器最好启用read_only=ON禁止写操作,防止误操作。

级联复制

准备四台数据库服务器

主服务器改配置创建账号

MariaDB用法——主从复制高可用

级联服务器改配置文件,必须添加三项

MariaDB用法——主从复制高可用

添加主服务器并同步数据

MariaDB用法——主从复制高可用

查看状态

MariaDB用法——主从复制高可用

reset slave;

reset slave all;从服务器清除所有二进制日志记录,重新复制

创建主从用户

MariaDB用法——主从复制高可用

从服务器

MariaDB用法——主从复制高可用

连接级联服务器

MariaDB用法——主从复制高可用

查看连接状态

MariaDB用法——主从复制高可用

操作失误时会导致如下报错

表数据已存在

MariaDB用法——主从复制高可用

解决方法删除库重新同步

日志异常

MariaDB用法——主从复制高可用

重新导入日志文件change master to master_log_file='mariadb-bin.000001',master_log_pos=245;

账号故障

MariaDB用法——主从复制高可用

排查账号详细故障并解决(密码错误、权限错误、用户名错误等)

详细故障可查询报错编号perror

MariaDB用法——主从复制高可用

半同步复制

主服务器

启用插件

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

MariaDB用法——主从复制高可用

开启半同步功能

MariaDB用法——主从复制高可用

从服务器

相同操作

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

MariaDB用法——主从复制高可用

重新同步从服务器开启半同步

 

MariaDB用法——主从复制高可用

数据库加密

CA服务器

生成私钥key

openssl genrsa 2048 > cakey.pem

MariaDB用法——主从复制高可用

自签名文件

openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650

MariaDB用法——主从复制高可用

生成主从服务器的私钥文件和请求文件两个文件(全部在CA服务器上做)

主服务器

openssl req -newkey rsa:2048 -days 365 -nodes -keyout master.key > master.csr

MariaDB用法——主从复制高可用

颁发证书

openssl x509 -req -in master.csr -CA cacert.pem -CAkey cakey.pem -set_serial 01 >master.crt

MariaDB用法——主从复制高可用

从服务器

MariaDB用法——主从复制高可用

复制到主从服务器并删除不需要的文件

MariaDB用法——主从复制高可用

主服务器

MariaDB用法——主从复制高可用

从服务器

MariaDB用法——主从复制高可用

授权mysql

主服务器

MariaDB用法——主从复制高可用

加密成功

MariaDB用法——主从复制高可用

创建从登陆的加密账号

grant replication slave on *.* to [email protected]'192.168.30.%' identified by '111111' require ssl;

MariaDB用法——主从复制高可用

从服务器(可以使用同上操作)

测试连接

MariaDB用法——主从复制高可用

从服务器做加密

MariaDB用法——主从复制高可用

已启用

MariaDB用法——主从复制高可用

授权加密

CHANGE MASTER TO

MASTER_HOST='192.168.30.112',

MASTER_USER='tom',

MASTER_PASSWORD='111111',

MASTER_LOG_FILE='mariadb-bin.000002',

MASTER_LOG_POS=407,

MASTER_SSL=1,

MASTER_SSL_CA = '/etc/my.cnf.d/ssl/cacert.pem',

MASTER_SSL_CERT = '/etc/my.cnf.d/ssl/slave.crt',

MASTER_SSL_KEY = '/etc/my.cnf.d/ssl/slave.key';

MariaDB用法——主从复制高可用

开始同步

MariaDB用法——主从复制高可用

高可用

实战:实现主从高可用MHA

 

环境:四台主机

manager,master,slave1,slave2

1 准备

selinux ,iptables ,time

用manager主机做时间服务器

yum -y install ntp

systemctl start ntpd

systemctl enable ntpd

其他服务器用ntpdate IP(manager主机的IP)命令同步

搭建主从服务器,步骤同上

主配置文件

MariaDB用法——主从复制高可用

两个从配置文件server_id编号不同

MariaDB用法——主从复制高可用

添加账号

MariaDB用法——主从复制高可用

start slave

四个主机实现ssh key验证同上

MariaDB用法——主从复制高可用

创建一个授权账号

MariaDB用法——主从复制高可用

安装MHA

manager主机两个包都安装,其他只安装node

在manager节点

下载软件包

https://code.google.com/archive/p/mysql-master-ha/

yum install mha4mysql-manager-0.56-0.el6.noarch.rpm mha4mysql-node-0.56-0.el6.noarch.rpm

MariaDB用法——主从复制高可用

创建MHA的配置文件

[server default]

user=mhauser

password=111111

manager_workdir=/data/mastermha/app1/

manager_log=/data/mastermha/app1/manager.log

remote_workdir=/data/mastermha/app1/

ssh_user=root

repl_user=repluser

repl_password=111111

ping_interval=1

[server1]

hostname=192.168.30.112

candidate_master=1

[server2]

hostname=192.168.30.113

candidate_master=1

[server3]

hostname=192.168.30.114

 

MariaDB用法——主从复制高可用

6 在manager节点上

masterha_check_ssh --conf=/etc/mastermha/app1.cnf 检测ssh

MariaDB用法——主从复制高可用

masterha_check_repl --conf=/etc/mastermha/app1.cnf 检测复制情况

MariaDB用法——主从复制高可用

masterha_manager --conf=/etc/mastermha/app1.cnf 启动mha(在服务器的tty上执行,不要远程执行)

MariaDB用法——主从复制高可用

验证

复制功能

主:

MariaDB用法——主从复制高可用

从:

MariaDB用法——主从复制高可用

MHA测试

主服务器宕机

MariaDB用法——主从复制高可用

切换完成

MariaDB用法——主从复制高可用

切换完成

MariaDB用法——主从复制高可用

实验:实现Gelera cluster

 

三台主机(太简单了,不想截图)

1 yum安装

[mariadb]

name = MariaDB

baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-5.5.60/yum/centos7-amd64/

gpgcheck=0

安装

yum -y install MariaDB-Galera-server

更改配置文件,三台相同

MariaDB用法——主从复制高可用

启动第一个节点

MariaDB用法——主从复制高可用

启动其他节点

MariaDB用法——主从复制高可用

查看状态

MariaDB用法——主从复制高可用

MariaDB用法——主从复制高可用

验证

MariaDB用法——主从复制高可用

 

MariaDB用法——主从复制高可用