前一段时间,因开发的需求新添加了几个mariadb的数据库做从库。现在,有时间了就将当时我写的操作流程,放到csdn上,以供参考。
本文使用的是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
将原有数据库的数据进行备份,如该主库已有从库,就去备份从库的数据,避免影响主库(需知该数据库的用户及密码)
可使用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”
要先将备份的数据传入从库所在的服务器
(找空间大的位置,数据导入数据库后删除)
先将新添加的从库开启,再导入备份的数据
<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
<1>进入主库进行此从库的ip的授权
grant super,replication slave ,reload on . to ‘repl’@’192.168.10.55’ identified by ‘repl’;
<2>查看主库的状态
show master status;
<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 为成功
<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监控的数据库文件的默认位置为/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;
由于是导入原主从的从库的数据,开启同步后,一段时间后,新做从库的密码会变更为被导出数据的那个从库的用户及密码。
当退出新从库,再次进入时,可使用被导出数据的那个从库的用户及密码进入数据库