添加mysql从库操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/GX_1_11_real/article/details/81088898

前言


前一段时间,因开发的需求新添加了几个mariadb的数据库做从库。现在,有时间了就将当时我写的操作流程,放到csdn上,以供参考。




Mariadb主从复制




【1】安装maraidb数据库


本文使用的是jenkins的方法推送过去的mariadb

按照原有的数据库的主库的版本安装相同版本的数据库
mysql -V 查看版本


<1>新数据库的安装先看jekins上有无此版本,如有可推送过去

这里写图片描述

IP 为从库服务器ip
版本 选择与主库版本相同
端口 选择未被使用端口
server-id 根据原有的主从server-id填写,不可重合

推送过去,即是开启状态



<2>如jenkins上不存在,就从官网上查找,YUM安装或编译安装

yum安装:
网上查找mariadb对应版本的repo后,添加到yum仓库
yum -y install mariadb-10.1.8*

编译安装:
可参考一下链接中的一部分内容.
https://blog.csdn.net/GX_1_11_real/article/details/81066336




【2】备份数据库数据


将原有数据库的数据进行备份,如该主库已有从库,就去备份从库的数据,避免影响主库(需知该数据库的用户及密码)

可使用mysqldump或xtrabackup备份数据


<1>mysqldump方式

mkdir /App/backup/mysqldump_7-12/

mysqldump -hlocalhost -u用户 -p密码 –default-character-set=utf8 –skip-comments –add-drop-database –master-data=1 –flush-logs –opt -A –skip-lock-tables > /App/backup/mysqldump_7-12/dbbackup.sql &

rsync -aP mysqldump_7-12 192.168.10.55:/App/

备注:
如使用下列参数热备,无需锁表
–skip-lock-tables



<2>xtrabackup方式

mkdir /App/backup/7-12-mysql/

innobackupex –defaults-file=/App/conf/OPS/mariadb/my.cnf –no-lock –user=用户 –password=密码 –socket=/tmp/mysql.sock /App/backup/7-12-mysql/

rsync -aP /App/backup/7-12-mysql/ 192.168.10.55:/App/



如使用压缩备份注意事项:

<1>–stream=tar参数慎用,如使用解压时必须要带-i的参数 tar -xizf

<2>要安装sshpass

<3>备份到远程服务器
innobackupex –defaults-file=/App/conf/OPS/mariadb/my.cnf –no-lock – –user=用户 –password=密码 –socket=/tmp/mysql.sock –stream=tar ./ | gzip | sshpass -p ‘root’ ssh [email protected] “cat - >
/ App/backup/7-12-mysql/backup.tar.gz”




【3】从库导入备份的数据


要先将备份的数据传入从库所在的服务器
(找空间大的位置,数据导入数据库后删除)

先将新添加的从库开启,再导入备份的数据


<1>mysqldump备份恢复方式

mysql -uroot -p密码 -S /tmp/mariadb_3306.sock -f < /App/mysqldump_7-12/dbbackup.sql



<2> xtrabackup备份恢复方式(根据情况加参数)


要先停止从库

/etc/init.d/mariadb_3306 stop


准备
如备份是压缩格式,先解压

innobackupex –defaults-file=/App/conf/OPS/mariadb_3306/my.cnf –socket=/tmp/mariadb_3306.sock –apply-log –no-lock 2018-07-12_17-48-29/


恢复

innobackupex –defaults-file=/App/conf/OPS/mariadb_3306/my.cnf –socket=/tmp/mariadb_3306.sock –copy-back –no-lock 2018-07-12_17-48-29/


更改 data/ 目录权限

cd /App/data/
chown -R mysql.mysql mysql_3308


启动从库

/etc/init.d/mariadb_3306 start




【4】主库给从库的IP授权


<1>进入主库进行此从库的ip的授权

grant super,replication slave ,reload on . to ‘repl’@’192.168.10.55’ identified by ‘repl’;



<2>查看主库的状态
show master status;



【5】从库连接主库


<1>进入从库,做主从

change master to master_host=’192.168.10.50’,master_user=’repl’,master_password=’repl’,master_port=3306,master_log_file=’binlog.000011’,master_log_pos=1234567;



<2>开启同步并查看

start slave;
show slave status;

lave_IO_Running | Slave_SQL_Running 都是yes 为成功



【6】同步数据时报错,解决方法


<1>执行停止同步

stop slave;



<2>重做主从或跳过错误

change master to master_host=’192.168.10.50’,master_user=’repl’,master_password=’repl’,master_port=3306,master_log_file=’binlog.000011’,master_log_pos=2123456;

set global sql_slave_skip_counter =1;



<3>开启同步

start slave;



备注:
可在my.cnf中追加下列,并重启数据库(数据相差不大时使用此法)
slave-skip-errors=1032,1062,1007




zabbix监控相关(可忽略)


由于公司的zabbix监控的数据库文件的默认位置为/usr/bin/下,所以需要修改



<1>拷贝文件到此位置,做链接也可,环境变量也可

mv /etc/my.cnf /etc/my.cnf_old
cp /App/conf/OPS/mariadb_3306/my.cnf /etc/my.cnf
cp /App/install/OPS/mariadb_3306/mariadb-10.1.8/bin/mysql /usr/bin/
cp /App/install/OPS/mariadb_3306/mariadb-10.1.8/bin/mysqladmin /usr/bin/



<2>进入新增从库,给zabbix监控mysql使用的用户授权

GRANT SELECT, REPLICATION CLIENT ON . TO ‘用户’@’localhost’ IDENTIFIED BY ‘密码’;
GRANT SELECT, REPLICATION CLIENT ON . TO ‘用户’@’127.0.0.1’ IDENTIFIED BY ‘密码’;
FLUSH PRIVILEGES;




注意



由于是导入原主从的从库的数据,开启同步后,一段时间后,新做从库的密码会变更为被导出数据的那个从库的用户及密码。

当退出新从库,再次进入时,可使用被导出数据的那个从库的用户及密码进入数据库

猜你喜欢

转载自blog.csdn.net/GX_1_11_real/article/details/81088898