MariaDB用法——主从复制高可用
主从
在主节点实现
vim /etc/my.cnf
server_id=1
log_bin
innodb_file_per_table
重启服务后生成新的二进制日志,旧的可以删掉
systemctl restart mariadb
添加从服务器同步用户
mysql>grant replication slave on *.* to 用户名@'IP或网段' identified by '密码';
从节点
vim /etc/my.cnf
server_id=2
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=具体位置
看下状态
开启复制
start slave
创建数据库,查看是否能同步
主服务器创建数据库
从服务器查看
主从复制
已有旧主,创建新从
创建从服务器该配置文件(参考上一实验,只改配置文件)
备份主服务器
mysqldump -A -F --single-transaction --master-data=1 > /backup/all.sql
scp /backup/all.sql 从节点:/
更改备份文件
导入备份文件
现在数据库还是不同步的,需要开始同步一下
start slave;
从服务器最好启用read_only=ON禁止写操作,防止误操作。
级联复制
准备四台数据库服务器
主服务器改配置创建账号
级联服务器改配置文件,必须添加三项
添加主服务器并同步数据
查看状态
reset slave;
reset slave all;从服务器清除所有二进制日志记录,重新复制
创建主从用户
从服务器
连接级联服务器
查看连接状态
操作失误时会导致如下报错
表数据已存在
解决方法删除库重新同步
日志异常
重新导入日志文件change master to master_log_file='mariadb-bin.000001',master_log_pos=245;
账号故障
排查账号详细故障并解决(密码错误、权限错误、用户名错误等)
详细故障可查询报错编号perror
半同步复制
主服务器
启用插件
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
开启半同步功能
从服务器
相同操作
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
重新同步从服务器开启半同步
数据库加密
CA服务器
生成私钥key
openssl genrsa 2048 > cakey.pem
自签名文件
openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650
生成主从服务器的私钥文件和请求文件两个文件(全部在CA服务器上做)
主服务器
openssl req -newkey rsa:2048 -days 365 -nodes -keyout master.key > master.csr
颁发证书
openssl x509 -req -in master.csr -CA cacert.pem -CAkey cakey.pem -set_serial 01 >master.crt
从服务器
复制到主从服务器并删除不需要的文件
主服务器
从服务器
授权mysql
主服务器
加密成功
创建从登陆的加密账号
grant replication slave on *.* to [email protected]'192.168.30.%' identified by '111111' require ssl;
从服务器(可以使用同上操作)
测试连接
从服务器做加密
已启用
授权加密
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';
开始同步
高可用
实战:实现主从高可用MHA
环境:四台主机
manager,master,slave1,slave2
1 准备
selinux ,iptables ,time
用manager主机做时间服务器
yum -y install ntp
systemctl start ntpd
systemctl enable ntpd
其他服务器用ntpdate IP(manager主机的IP)命令同步
搭建主从服务器,步骤同上
主配置文件
两个从配置文件server_id编号不同
添加账号
start slave
四个主机实现ssh key验证同上
创建一个授权账号
安装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
创建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
6 在manager节点上
masterha_check_ssh --conf=/etc/mastermha/app1.cnf 检测ssh
masterha_check_repl --conf=/etc/mastermha/app1.cnf 检测复制情况
masterha_manager --conf=/etc/mastermha/app1.cnf 启动mha(在服务器的tty上执行,不要远程执行)
验证
复制功能
主:
从:
MHA测试
主服务器宕机
切换完成
切换完成
实验:实现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
更改配置文件,三台相同
启动第一个节点
启动其他节点
查看状态
验证