初衷
在一次项目中需要mysql主从配置,依此记录方便日后查看
修改my.cnf
[mysqld]加入下面的内容:
#切换到root用户 su root
打开mysql配置文件/etc/my.cnf,在[mysqld]加入如下内容:
[mysqld]
服务的唯一编号 server-id=1
开启mysql binlog功能 log-bin=mysql-bin
binlog记录内容的方式,记录被操作的每一行 binlog_format = ROW
减少记录日志的内容,只记录受影响的列 binlog_row_image = minimal
指定需要复制的数据库名(多个重复行)为db1/db2/db3
binlog-do-db=db1
binlog-do-db=db2
binlog-do-db=db3
重启mysql的服务
重启mysql 服务(需要用sudo高权)sudo service mysqld restart
创建主从同步账号
登录mysql数据库 mysql -u root -p
创建主从数据库复制用户名/密码(data/Data#123),红色需要修改为从库ip
grant replication slave on . to 'data'
@'从库ip'
identified by 'Data#123'
;
刷新权限信息 flush privileges;
mysql终端执行如下命令 show master status\G;
从库配置
从库相关,如下相关命令均在此服务器执行。
删除从库auto.cnf
配置文件(因主从复制server-id
不可一样,故需要删除从auto.cnf
,让其重新生成)
切换到root用户 su root
停止mysql服务 sudo service mysqld stop
备份auto.cfg配置 mv /home/mysql57/data/auto.cnf /home/mysql57/data/auto.cnf.bak
重启服务 sudo service mysqld start
修改my.cnf文件,在[mysqld]加入下面的内容
[mysqld]
########slave database config########
#slave server-id
server-id = 2
log-bin = mysql-bin
binlog_format = ROW
binlog_row_image = minimal
binlog-do-db=di1
binlog-do-db=db2
binlog-do-db=db3
重启mysql 服务(需要用sudo高权) sudo service mysqld restart
执行主从同步命令
特别说明:如下命令黄色标识部分,请参考主库配置中 4步中的 file和posion对应的值;
登录mysql数据库 mysql -u root -p
执行同步命令(红色为主库IP、同步用户名及密码),master_log_file,master_log_pos
,请参考主库查询结果填写。
change master to master_host='从库ip',master_user='data',master_password='Data#123',master_log_file='mysql-bin.000002(主库查询结果File)',master_log_pos=880(主库查询结果Position);
开启同步功能 start slave;
查看从库状态 show slave status\G;
注意:Slave_IO_Running
和Slave_SQL_Running
的状态都为Yes
时,说明从库配置成功。
主从验证
主库操作数据库从库同步 正确,从库操作数据库主库未变 正确
卸载步骤
停用mysql服务 sudo systemctl stop mysqld
查看mysql相关安装服务 sudo rpm -qa|grep -i mysql
通过rpm -e xxx –-nodeps 卸载掉 (需要用sudo高权)
sudo rpm -e mysql-community-client-5.7.28-1.el7.x86_64 --nodeps
sudo rpm -e mysql-community-libs-5.7.28-1.el7.x86_64 --nodeps
sudo rpm -e mysql-community-server-5.7.28-1.el7.x86_64 --nodeps
sudo rpm -e mysql-community-common-5.7.28-1.el7.x86_64 --nodeps
sudo rpm -e mysql-community-devel-5.7.28-1.el7.x86_64 --nodeps
删除残余文件
sudo rm -rf /etc/my.cnf
sudo rm -rf /home/mysql57
DB数据库自动备份
为保证mysql数据的安全性,系统在从库上设置定时任务进行数据自动备份,防止数据丢失给系统造成不可恢复的损失
创建mysql备份目录 mkdir /home/mysql57_backup
创建mysql备份shell脚本目录 mkdir /home/mysql57_backup_shell
放入脚本
授权可执行权限 chmod 777 *
执行备份操作 执行脚本
配置自动定时任务信息 crontab -e
内容如下(每2小时备份一次)
0 */2 * * * /bin/bash /home/mysql57_backup_shell/mysql_backup.sh
查看定时任务 crontab -l