作业
1、如果主节点已经运行了一段时间,且有大量数据时,如何配置并启动slave节点(写出操作步骤)
方法:通过备份恢复数据至从服务器、再复制起始位置为备份时,二进制文件及其POS
操作步骤:准备三台主机Centos7(master)Centos8(slave1)新增Centos81(slave2)
(1)在master服务器上完全做备份,并传给C81
创建文件夹:mkdir /data/backup/
完全备份:mysqldump -A -F --single-transaction --master-data=1 > /data/backup/fullbackup_date +%F_%T.sql
拷贝到目标服务器:scp /data/backup/fullbackup_2020-10-16_20:04:19.sql 10.0.0.8:/data/
(2) 优化master和slave服务器的性能
set global sync_binlog=0;
set global innodb_flush_log_at_trx_commit=2;
(3) 配置slave2,从完全备份的位置之后开始复制
下载:dnf -y install mariadb-server
设置配置文件:vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
server-id=3
read-only
重启服务:systemctl restart mariadb
设置:vim /data/backup/fullbackup_2020-10-16_20:04:19.sql
CHANGE MASTER TO
MASTER_HOST=‘10.0.0.7’,
MASTER_USER=‘repluser’,
MASTER_PASSWORD=‘12345’,
MASTER_PORT=3306,
MASTER_LOG_FILE=‘mariadb-bin.000002’,
MASTER_LOG_POS=404;
(4)最后把文件导入mysql数据库中
mysql < /data/backup/fullbackup_2020-10-16_20:04:19.sql
2、当master服务器宕机,提升一个slave成为新的master(写出操作步骤)
(1)查看/var/lib/mysql/relay-log.info文件,找到哪个从节点的数据库是最新的,让它成为新master
(2)修改新master的/etc/my.cnf.d/mariadb-server.cnf的配置文件,关闭read-only配置
(3)清除旧的master复制信息
set global read_only=off;
stop slave;
reset slave all;
(4)在新master上完全备份并复制到其他slave服务器上,分析旧的master的二进制日志,将未同步到至新master的二进制日志导出来,恢复到新master,尽可能恢复数据
mysqldump -A --single-transaction --master-data=1 -F > backup.sql
scp backup.sql 其他slaveIP:/data
(5)其他slave服务器重新还原数据库,指向新的master
vim backup.sql
(参照上一题格式)CHANGE MASTER TO
MASTER_HOST=‘10.0.0.7’,
MASTER_USER=‘repluser’,
MASTER_PASSWORD=‘12345’,
MASTER_PORT=3306,
MASTER_LOG_FILE=‘mariadb-bin.000002’,
MASTER_LOG_POS=404;
在slave服务器数据库设置: stop slave;
reset slave all;
set sql_log_bin=off;
source backup.sql;
set sql_log_bin=on;
start slave;
3、通过MHA0.58搭建一个数据库集群结构
准备四台主机:centos7(10.0.0.7):MHA管理端
centos8(10.0.0.8):Master
centos8(10.0.0.9):Slave1
centos8(10.0.0.10):Slave2
(1)在管理节点上安装两个包mha4mysql-manager和mha4mysql-node
yum -y install mha4mysql-manager-0.58-0.e17.centos.noarch.rpm
yum -y install mha4mysql-node-0.58-0.e17.centos.noarch.rpm
(2)在所有节点实现相互之间ssh key验证
ssh-keygen
ssh-copy-id 10.0.0.7
rsync -av .ssh 10.0.0.8:/root/
rsync -av .ssh 10.0.0.9:/root/
rsync -av .ssh 10.0.0.10:/root/
(3)在管理节点建立配置文件
#mkdir /etc/mastermha/
#vim /etc/mastermha/app1.cnf
[server default]
user=mhauser(用于远程连接MySQL所有节点的用户,需要有管理员的权限)
password=12345 (假设)
manager_workdir=/data/mastermha/app1 (目录会自动生成)
manager_log=/data/mastermha/app1/manager.log
remote_ workdir=/data/mastermha/app1
ssh_user=root (用于实现远程ssh基于KEY的连接,访问二进制日志)
repl_user=repluser (主从复制的用户信息)
repl_password=12345
ping_interval=1 (健康性检查的时间间隔)
master_ip_failover_script=/usr/local/bin/master_ip_failover (切换VIP的 perl脚本)
report_script=/usr/local/bin/sendmail.sh (当执行报警脚本)
check_repl_dealy=0 (mha触发主从切换时会忽略复制的延迟)
master_binlog_dir=/data/mysql (指定二进制日志存放的日志)
[server1]
hostname=10.0.0.8
candidate_master=1
[server2]
hostname=10.0.0.9
candidate_master=1 (设置为优先候选master,即使不是集群中事件最新的slave,也会优先当master)
[server3]
hostname=10.0.0.10
(4)给相关脚本加执行权限
#chmod +x /usr/local/bin/sendmail.sh
#chmod +x /usr/local/bin/master_ip_failover
(5)在centos8(10.0.0.8)上实现Master配置
#mkdir /data/mysql
#chown mysql.mysql /data/mysql
#vim /etc/my.cnf
[mysqld]
server_id=1
log-bin=/data/mysql/mysql-bin
skip_name_resolve=1
general_log
(6)在mysql数据库里实现配置
grant replication slave on . to repluser@‘10.0.0.%’ identified by ‘yang’;
grant all on . to mhauser@‘10.0.0.%’ identified by ‘yang’;
(7)配置VIP
#ifconfig eth0:1 10.0.0.100/24
(8)在其他两台C8主机上实现slave配置
#mkdir /data/mysql
#chown mysql.mysql /data/mysql/
#vim /etc/my.cnf
[mysqld]
server_id=(以两台主机IP尾号为ID)
log-bin=/data/mysql/mysql-bin
read_only
relay_log_purge=0
skip_name_resolve=1 (禁止反向解析)
(9)在slave数据库上实现配置
CHANGE MASTER TO MASTER_HOST=‘10.0.0.7’,
MASTER_USER=‘repluser’,
MASTER_PASSWORD=‘12345’,
MASTER_LOG_FILE=‘mariadb-bin.000001’,
MASTER_LOG_POS=342;
START SLAVE;
(10)在C7上检查Mha的环境
(检查环境) #masterha_check_ssh --conf=/etc/mastermha/app1.cnf
#masterha_check_repl --conf=/etc/mastermha/app1.cnf
(查看状态)#masterha_check_status --conf=/etc/mastermha/app1.cnf
(11)启动MHA
#nohup masterha_manager --conf=/etc/mastermha/app1.cnf &> /dev/null
#masterha_check_status --conf=/etc/mastermha/app1.cnf
(11)排错日志
tail /data/mastermha/app1/manager.log
4、实战案例:Percona XtraDB Cltuster(PXC5.7)
(1)安装Percona XtraDB Cluster 5.7
yum -y install Percona-XtraDB-Cluster-57
(2)在各个节点上分别配置mysql及集群配置文件
/etc/my.cnf为主配置文件,当前版本中,其余的配置文件都放在 /etc/percona-xtrabd-cluster.conf.d目录里,包括mysql.cnf,mysql_safe.cnf,wsrep.cnf三个文件
(3)启动PXC集群中第一个节点
systemctl start mysql@bootstrap.server
(4)创建相关用户并授权
CREATE USER ‘sstuser’@‘localhost’ IDENTIFIED BY ‘s3cretPass’;
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON . TO ‘sstuser’@‘localhost’
SHOW VARIABLES LIKE ‘wsrep%’\G (查看相关变量)
(5)启动PXC集群中其它所有节点
systemctl start mysql
(6)在任意节点查看集群状态,验证集群是否成功
SHOW VARIABLES LIKE ‘wsrep_node_name’;
SHOW VARIABLES LIKE ‘wsrep_node_address’;
SHOW VARIABLES LIKE ‘wsrep_on’;
SHOW STATUS LIKE ‘wsrep_cluster_size’;
5、通过ansible部署二进制mysql 8
浙公网安备 33010602011771号