主从

在主节点实现

vim /etc/my.cnf
server_id=1
log_bin
innodb_file_per_table

mariadb做主从复制 mariadb主从切换_服务器

 

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

systemctl restart mariadb

mariadb做主从复制 mariadb主从切换_mariadb做主从复制_02

 

添加从服务器同步用户

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

mariadb做主从复制 mariadb主从切换_配置文件_03

 

从节点

vim /etc/my.cnf

server_id=2

mariadb做主从复制 mariadb主从切换_配置文件_04

 

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主从切换_mysql_05

 

看下状态

mariadb做主从复制 mariadb主从切换_服务器_06

mariadb做主从复制 mariadb主从切换_服务器_07

 

开启复制

start slave

mariadb做主从复制 mariadb主从切换_服务器_08

 

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

主服务器创建数据库

mariadb做主从复制 mariadb主从切换_mariadb做主从复制_09

 

从服务器查看

mariadb做主从复制 mariadb主从切换_mysql_10

主从复制

已有旧主,创建新从

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

备份主服务器

mysqldump -A -F --single-transaction --master-data=1 > /backup/all.sql
scp /backup/all.sql 从节点:/

mariadb做主从复制 mariadb主从切换_mariadb做主从复制_11

 

更改备份文件

mariadb做主从复制 mariadb主从切换_mariadb做主从复制_12

导入备份文件

mariadb做主从复制 mariadb主从切换_mysql_13

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

mariadb做主从复制 mariadb主从切换_服务器_14

start slave;

mariadb做主从复制 mariadb主从切换_配置文件_15

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

级联复制

准备四台数据库服务器

主服务器改配置创建账号

mariadb做主从复制 mariadb主从切换_服务器_16

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

mariadb做主从复制 mariadb主从切换_mysql_17

添加主服务器并同步数据

mariadb做主从复制 mariadb主从切换_mysql_18

查看状态

mariadb做主从复制 mariadb主从切换_mysql_19

reset slave;

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

创建主从用户

mariadb做主从复制 mariadb主从切换_mysql_20

从服务器

mariadb做主从复制 mariadb主从切换_mariadb做主从复制_21

连接级联服务器

mariadb做主从复制 mariadb主从切换_mysql_22

查看连接状态

mariadb做主从复制 mariadb主从切换_配置文件_23

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

表数据已存在

mariadb做主从复制 mariadb主从切换_mysql_24

解决方法删除库重新同步

日志异常

mariadb做主从复制 mariadb主从切换_服务器_25

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

账号故障

mariadb做主从复制 mariadb主从切换_mysql_26

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

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

mariadb做主从复制 mariadb主从切换_配置文件_27

半同步复制

主服务器

启用插件

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

mariadb做主从复制 mariadb主从切换_mysql_28

开启半同步功能

mariadb做主从复制 mariadb主从切换_mariadb做主从复制_29

从服务器

相同操作

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

mariadb做主从复制 mariadb主从切换_服务器_30

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

 

mariadb做主从复制 mariadb主从切换_服务器_31

数据库加密

CA服务器

生成私钥key

openssl genrsa 2048 > cakey.pem

mariadb做主从复制 mariadb主从切换_服务器_32

自签名文件

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

mariadb做主从复制 mariadb主从切换_配置文件_33

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

主服务器

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

mariadb做主从复制 mariadb主从切换_mariadb做主从复制_34

颁发证书

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

mariadb做主从复制 mariadb主从切换_服务器_35

从服务器

mariadb做主从复制 mariadb主从切换_配置文件_36

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

mariadb做主从复制 mariadb主从切换_mysql_37

主服务器

mariadb做主从复制 mariadb主从切换_配置文件_38

从服务器

mariadb做主从复制 mariadb主从切换_mariadb做主从复制_39

授权mysql

主服务器

mariadb做主从复制 mariadb主从切换_服务器_40

加密成功

mariadb做主从复制 mariadb主从切换_服务器_41

创建从登陆的加密账号

grant replication slave on *.* to tom@'192.168.30.%' identified by '111111' require ssl;

mariadb做主从复制 mariadb主从切换_mysql_42

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

测试连接

mariadb做主从复制 mariadb主从切换_配置文件_43

从服务器做加密

mariadb做主从复制 mariadb主从切换_服务器_44

已启用

mariadb做主从复制 mariadb主从切换_mariadb做主从复制_45

授权加密

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主从切换_服务器_46

开始同步

mariadb做主从复制 mariadb主从切换_配置文件_47

高可用

实战:实现主从高可用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做主从复制 mariadb主从切换_mariadb做主从复制_48

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

mariadb做主从复制 mariadb主从切换_mariadb做主从复制_49

添加账号

mariadb做主从复制 mariadb主从切换_配置文件_50

start slave

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

mariadb做主从复制 mariadb主从切换_服务器_51

创建一个授权账号

mariadb做主从复制 mariadb主从切换_mysql_52

安装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做主从复制 mariadb主从切换_mysql_53

创建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做主从复制 mariadb主从切换_配置文件_54

6 在manager节点上

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

mariadb做主从复制 mariadb主从切换_配置文件_55

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

mariadb做主从复制 mariadb主从切换_服务器_56

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

mariadb做主从复制 mariadb主从切换_配置文件_57

验证

复制功能

主:

mariadb做主从复制 mariadb主从切换_服务器_58

从:

mariadb做主从复制 mariadb主从切换_服务器_59

MHA测试

主服务器宕机

mariadb做主从复制 mariadb主从切换_配置文件_60

切换完成

mariadb做主从复制 mariadb主从切换_mysql_61

切换完成

mariadb做主从复制 mariadb主从切换_mariadb做主从复制_62

实验:实现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做主从复制_63

启动第一个节点

mariadb做主从复制 mariadb主从切换_配置文件_64

启动其他节点

mariadb做主从复制 mariadb主从切换_mysql_65

查看状态

mariadb做主从复制 mariadb主从切换_配置文件_66

mariadb做主从复制 mariadb主从切换_配置文件_67

验证

mariadb做主从复制 mariadb主从切换_服务器_68

 

mariadb做主从复制 mariadb主从切换_服务器_69