2020-03-14 15:11:03
一直觉得配置mysql的主从挺费时间,现在花了一点时间写了个全自动配置mysql主从的shell脚本。如有什么错误,欢迎提出。
1、在使用之前需要在主服务器上编辑/etc/my.cnf文件,在[mysqld]的下面加入下面代码:
log-bin=mysql-bin server-id=1 innodb_flush_log_at_trx_commit=1 sync_binlog=1 binlog-do-db=centos binlog_ignore_db=mysql
server-id=1中的1可以任定义,只要是唯一的并且比从服务器的server-id小就行。
binlog-do-db=centos是表示binlog只记录centos数据库的日志,即只同步centos。
binlog_ignore_db=mysql表示忽略备份mysql。
不加binlog-do-db和binlog_ignore_db,那就表示备份全部数据库。
2、在从服务器编辑配置文件my.cnf,在[mysqld]下面加入:
server-id=2
2可以自己定义,只要保证唯一的并且比主的server-id大就行。
3、脚本分为两个,一个是配置mysql主服务器的shell脚本,另一个是远程连接mysql从服务器的exp脚本。
bash shell脚本:master.sh
#!/bin/bash export mysqlbinpath="/usr/bin" #mysql路径 #variables for master export master_mysql_root_passwd="root" #mysql主数据库的root密码 export replication_user="copydb" #用于复制的mysql用户 export replication_passwd="123456" #mysql用户copydb的密码 export replication_db="centos" #需要同步的数据库名 export master_ip="8.8.8.8" #mysql主服务器IP #variables for slave export slave_mysql_root_passwd="123456" #mysql从数据库的root密码 export slave_ip="8.8.4.4" #从服务器IP地址 export slave_ssh_root_passwd="123456" #mysql从数据库的ssh的root密码 #create replication user { ${mysqlbinpath}/mysql -uroot -p${master_mysql_root_passwd} <<EOF CREATE USER '$replication_user'@'$slave_ip' IDENTIFIED BY '$replication_passwd'; GRANT REPLICATION SLAVE ON *.* TO '$replication_user'@'$slave_ip' IDENTIFIED BY '$replication_passwd'; FLUSH TABLES WITH READ LOCK; select sleep(10); EOF } & #export the database sql data. ${mysqlbinpath}/mysqldump -uroot -p${master_mysql_root_passwd} ${replication_db} > ${replication_db}.sql #get the master status info. export status=`${mysqlbinpath}/mysql -uroot -p${master_mysql_root_passwd} -e"show master statusG"` export binlogname=`echo "$status" | grep "File" | awk '{print $2}'` export position=`echo "$status" | grep "Position" | awk '{print $2}'` #create database on slave server. export createdb="${mysqlbinpath}/mysql -uroot -p${slave_mysql_root_passwd} -e'drop database if exists ${replication_db};create database ${replication_db};'" #import database sql data on slave server. export importsql="${mysqlbinpath}/mysql -uroot -p${slave_mysql_root_passwd} ${replication_db} < /root/${replication_db}.sql" #deploy the slave mysql server. export change_master="${mysqlbinpath}/mysql -uroot -p${slave_mysql_root_passwd} -e'stop slave;CHANGE MASTER TO MASTER_HOST="${master_ip}",MASTER_USER="${replication_user}",MASTER_PASSWORD="${replication_passwd}",MASTER_PORT=3306,MASTER_LOG_FILE="${binlogname}",MASTER_LOG_POS=${position},MASTER_CONNECT_RETRY=10;start slave;select sleep(3);show slave statusG'" yum -y install expect ./slave.exp
expect脚本:slave.exp
#!/usr/bin/expect -f spawn scp $env(replication_db).sql root@$env(slave_ip):/root expect { "*assword" {set timeout 300; send "$env(slave_ssh_root_passwd) ";} "yes/no" {send "yes "; exp_continue;} } expect eof spawn ssh root@$env(slave_ip) "$env(createdb);$env(importsql);$env(change_master)" expect { "*assword" {set timeout 300; send "$env(slave_ssh_root_passwd) ";} "yes/no" {send "yes "; exp_continue;} } expect eof
使用方法:
上传master.sh和slave.exp两个文件到mysql主服务器,执行master.sh脚本开始配置mysql主从。最后执行完输出的从服务器状态中的 Slave_IO_Running和Slave_SQL_Running都为Yes的话,则说明主从已经配置成功,否则失败。
使用注意:
master.sh文件中的23行有一个select sleep(10)语句,10是指锁表10秒,这个时间根据导出sql数据所需时间定,如果导出sql数据超过10秒,则需要调大锁表时间,否则可能会有用户写入数据而使导致主从配置失败。
使用shell脚本结合innobackupex自动备份mysql innodb数据库
04-06
Lvs自动部署及监控shell脚本
04-11
shell脚本制作俄罗斯方块游戏
02-27
nginx日志切割shell脚本
05-13
快速创建一个可读写的Samba Server的shell脚本
07-07
python flask-sqlalchemy如何设置使自动建的mysql表字符集charset为utf8
06-04
mysql(mariadb)新建用户及用户授权管理
06-01
CentOS-5 yum安装mysql-5.5/5.1
05-29
Linux chsh更改使用者shell设定命令详解
03-08
docker部署zabbix监控系统(nginx mysql)
06-28
自动化脚本一键搭建telegram的MTProto代理
11-17
配置GitLab触发jenkins自动构建项目
05-30
配置haproxy在http请求头添加后端用户真实IP
07-05
ActiveMQ基于zookeeper的主从(levelDB Master/Slave)搭建
07-11
Docker安装配置tomcat jdk
06-21
Jenkins运行多个步骤的配置
06-21
LJ3050D打印机单面打印正常,自动双面打印提示纸张错误
05-21
Linux modprobe自动处理可载入模块命令详解
05-25
Linux vsftpd启动,停止,重启脚本
07-23
Nginx HTTP2配置教程
06-23
自动投票软件(投票刷票神器) v3.8 免费版
52KB
下载2寸照片生成器(标准照片自动调整软件)v1.0 免费版
453KB
下载AI全自动剪辑软件 v10.1 官方版
162.5M
下载EXCEL全自动检索录入 v10.0.0.0免费版
2.11 MB
下载Yuntel电话自动拨号软件 v5.2.6.0官方版
51.5M
下载b站录播机(自动录屏软件) v1.6.10 破解版
129.1M
下载mc喊麦软件(全自动喊麦软件) V7.0 绿色版
8M
下载后台挂尔雅浏览器(自动刷课浏览器) 2021 免费版
88.7MB
下载心蓝IP自动更换器官方版 v1.0.0.2
5.5M
下载文件自动分类 v3.3 绿色版
288.11K
下载神奇照片自动打印软件下载
14.4M
下载绿点鼠标自动点击器(鼠标自动点击工具) 3.20 中文版
2.34MB
下载AutoHotkey下载
3.1M
下载HeidiSQL(mysql服务器数据管理工具) v11.0.0.6055 免费版
10.1M
下载h3c模拟器下载
59.1M
下载天猫砍红包软件下载
577.75 KB
下载天翼宽带 v2.1.0.0
15.59 MB
下载系统之家一键重装系统下载
28.4M
下载