centos7.+系统,mysql主从部署
两台服务器或者两个虚拟机
主库:master IP:192.168.85.152
从库:slave IP:192.168.85.153
关闭主库防火墙或者放行mysql的3306端口,如果不关闭,那么配置完成后,从库连接不到主库。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
或者放行3306端口(参数permanent表示重启仍然生效):
[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@localhost ~]# firewall-cmd --reload //重新加载策略
[root@localhost ~]# firewall-cmd --zone=public --list-ports //检查是否放行3306端口
1.打开主库的log-bin,并指定一个路径,修改server-id=1.
[root@localhost data]# Vim /etc/my.cnf
在[mysqld]这个模块下边添加
….
log-bin=/application/mysql/mysql-bin
server-id=1
……
2.然后通过下边的命令在主库下查看刚刚修改的参数:
[root@localhost data]# egrep "log-bin|server-id" /etc/my.cnf
server-id = 1
log-bin=/application/mysql/mysql-bin
3.修改后查看bin-log功能是否已经打开(建议重新启动下mysql)
(1)查看log-bin指定的目录下有没有下边的文件:
-rw-rw----. 1 mysql mysql 527954 Apr 24 01:15 mysql-bin.000001
-rw-rw----. 1 mysql mysql 36 Apr 24 00:50 mysql-bin.index
(2)在mysql数据库中:
Mysql > show variables like ’log_bin%’;
会看到log_bin 的vlue 值为ON ,说明已经开启。
4. 在主库上创建用于从库复制的账号backup:
mysql> create user backup identified by '123456';
mysql>grant replication slave on *.* to 'backup'@'192.168.85.%' identified by '123456';
上面语句的意思是:赋予backup用户可以从192.168.85.0这个网段连接同步的权限。
Mysql> flush privileges //刷新到磁盘中去,立即生效
注意:replication slave 为同步的必须的权限,而不需要赋予all权限。
5.在主库上做一备份
mysql > flush table with read lock ; //给主库加一个只读锁
保持上边的回话窗口,重新打开一个会话执行下边的备份命令:
[root@localhost ~]# mysqldump -uroot -p123456 –A –B --events --manter-data=2>/root/backup.sql
备份完后,给主库解锁:
mysql > unlock tables;
6.通过scp将主库备份的数据传给从库:
[root@localhost~]# scp/application/mysql/backupxin.sql root@192.168.85.153:/application/mysql // 主库上操作
7.在从库恢复数据:
[root@localhost ~]# mysql –uroot –p123456 < /application/mysql.backup.sql
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.85.152',
MASTER_PORT=3306,
MASTER_USER='backup',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.00000x', //--master-data=1时候,不需要这一行。
MASTER_LOG_POS=xxx; //--master-data=1时候,不需要这一行。
以上参数执行完成后,会放在master-info这个文件下边
[root@localhost ~]# cat /application/mysql/data/master.info
18
mysql-bin.000001
1464
192.168.85.152
backup
123456
3306
60
1800.000
mysql >start slave
检查成功与否:
mysql> show slave status\G
…..
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…….
如果以上两个参数是YES,就算成功了。