#教程# 使用脚本自动配置MYSQL数据库主从 支持lnmp/宝塔环境

前言

很多同学觉得配置 mysql 主从同步很复杂,下面我在网上淘了个脚本(貌似没有出处)使配置 Mysql 主从同步变得很简单了,经测试支持 lnmp 和 wdcp宝塔环境!配合RSYNC 实用配置脚本 增量备份你的 VPS 主机可同时备份网站数据。

图片[1] - #教程# 使用脚本自动配置MYSQL数据库主从 支持lnmp/宝塔环境 - 云线路

使用教程

本脚本合适空数据库,如果有数据的请先把需要同步的数据库进行锁定,导出数据库上传到从服务器还原到需要同步的数据库再执行如下两个脚本。操作完成后再解锁主服务器的数据库。(如数据库有数据的建议先进行备份再操作)

登录主服务器和从服务器数据库,输入数据库密码

mysql -u root -p

锁定 Mysql 数据库,待完成同步后再解锁数据库(解锁命令在后面)

flush tables with read lock;

退出 Mysql,exit 或者直接 Ctrl+c

exit

输入 Mysql 的 root 密码,备份(主服务器)数据库后传到(从)服务器

/usr/local/mysql/bin/mysqldump -u root -p 数据库名 > 数据库名.sql

登录你的从服务器,输入 Mysql 的 root 密码,把备份数据库导入从服务器

/usr/local/mysql/bin/mysql -u root -p 数据库名 < 数据库名.sql

下载(主服务器)脚本执行

或者直接 wget 执行脚本

wget https://dl.yunloc.com/Shell/mysql/mysql-root.sh && chmod +x mysql-root.sh && sh mysql-root.sh

第一步:输入主服务器 mysql root 密码

Please enter the database root password:

第二步:创建备份复制用户

Create a database backup user:

第三步:输入创建备份复制用户的密码

Database backup user password:

第三步:填写 server-id 默认为:1

Please enter service ID:

图片[2] - #教程# 使用脚本自动配置MYSQL数据库主从 支持lnmp/宝塔环境 - 云线路

File 值:mysql-bin.000033 Position 值:272 请记好,下面配置从服务器需要用到。


下载(从服务器)脚本执行

或者直接 wget 执行脚本

wget https://dl.yunloc.com/Shell/mysql/mysql-server.sh && chmod +x mysql-server.sh && sh mysql-server.sh

第一步:输入从服务器 mysql root 密码

Please enter the database root password:

第二步:输入主服务器 ip:172.96.xxx.xx

Enter the server Ip:

第三步:输入备份复制用户名,或在主服务器上 ssh 上复制过来

Enter the backup copy user:

第四步:输入备份复制用户的密码,或在主服务器 ssh 上复制过来

Backup copy user password:

第五步:输入 Fill 值,例如:mysql-bin.000033,从你的主服务器 ssh 上复制过来

Fill in the value of File (For example: mysql-bin.xxxxxx):

第六步:输入 Position 值,例如:272 ,从你的主服务器 ssh 上复制过来

Position value (for example: 107):

第七步:填写 server-id,id 值要比主服务器大就可以了,一般为 2

Please enter service ID:

执行完脚本后注意查看注意查看下面 2 个值是否为 Yes:表示完成 Mysql 同步了!

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

同步完成后,主从都解除 Mysql 锁定

unlock tables;

常见错误

Slave_IO_Running: Connecting
Slave_SQL_Running: Yes

1、由于配置好后存在链接主服务器延迟可能会出现 Slave_IO_Running: Connecting;

2、服务器或者云服务器商的安全组和系统防火墙开放 3306 端口,造成无法同步成功,解决办法:

CentOS6 7 关闭 SELinux,修改文件/etc/selinux/config ,设置后需要重启才能生效

# SELINUX=enforcing           //注释掉   
SELINUX=disabled             //增加 

centOS 6 关闭防火墙

关闭命令:

service iptables stop

永久关闭防火墙:

chkconfig iptables off

查看防火墙关闭状态:

service iptables status

centOS 7 关闭 firewall

查看默认防火墙状态(关闭后显示 notrunning,开启后显示 running)

firewall-cmd --state

停止 firewall

systemctl stop firewalld.service

禁止 firewall 开机启动 (需重启)

systemctl disable firewalld.service

进入 Mysql 输入密码:

mysql -u root -p

mysql 主从关闭同步(stop slave)后再打开(start slave)

stop slave;
start slave;

登录数据库执行下面的命令重新查看状态是否为 yes

SHOW SLAVE STATUS\G

MySQL 取消主从同步

主服务器进入 mysql

slave stop;
reset slave;
change master to master_host=' ';

即可成功删除主服务器同步用户信息。

从服务器进入 mysql

stop slave;
reset slave all;

再查看同步状态则为空

show slave status\G;

Empty set (0.00 sec)

ERROR: No query specified

结语

到这里就全部调试完成!

© 本站文章随意转载,但请注明出处!
THE END
点赞2.5W+ 分享
评论 共6条
头像
务必使用真实的邮箱地址评论,虚假邮箱的评论将不通过审核及无回复。
提交
头像

昵称

取消
昵称表情代码图片
    • 头像maxbad0
    • 头像haha0
    • 头像elliot0