环境:
主服务器:192.168.72.232 系统 Centos7 localhost
从服务器:192.168.72.152 系统 Centos7 localhost
(以下为两台服务器mysql正确安装完毕)
注意注意注意:主机的防火墙一定要关闭,建议从看到这个信息就开始关闭主服务器的防火墙
暂时关闭防火墙
systemctl stop firewalld
永久关闭防火墙
systemctl disable firewalld
设置开机启动
systemctl enable firewalld
主服务器配置:
[root@localhost ~]# mysql -u root -p ##进入数据库,输入密码
MariaDB [(none)]> show databases;
创建一个测试数据库DB1:
MariaDB [(none)]> create database DB1;
赋予数据库DB1连接权限:
MariaDB [(none)]> grant all privileges on *.* to root@‘%’ identified by ‘root‘ with grant option;
MariaDB [(none)]> flush privileges;
使用DB1创建一个表:
MariaDB [(none)]> use DB1;
MariaDB [DB1]> create table test (name VARCHAR(20), sex CHAR(1), birth DATE, birthaddr VARCHAR(20));
MariaDB [DB1]> insert into test values (‘abccs’,’f’,’1995-10-22′,’china’); ##sql语句插入几行记录
说明:grant all privileges on . to root@’%’ identified by ‘主mysql密码‘ with grant option;
%代表任何一台机器都可以连接
将数据库备份到从服务器上
[root@localhost ~]# mysqldump -h localhost -u root -p DB1 > /root/1.sql
[root@localhost ~]# scp -P22 /root/1.sql root@192.168.72.232:/root/ ##使用SCP命令拷贝到从服务器(test2服务器上,ssh端口为22)
从服务器配置:
从服务器按照上面的方法安装mariadb,创建一个空数据库DB1,不需要创建表,为了将主服务器上的mysql还原到从服务器上。
[root@localhost~]# mysql -u root -p
MariaDB [(none)]> create database DB1;
[root@tlocalhost~]# mysql -h localhost -u root -p DB1 < /root/1.sql
Mysql的主从服务器配置:
主服务器配置:
在/etc/my.cnf 添加如下内容:
配置如下:
#设置服务器ID,为1的表示为主服务器;如果服务器没有以下配置,添加,如果有就跳过。
server-id=1
#启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
log-bin=mysql-bin
#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行\
binlog-do-db=DB1
#不同步mysql系统数据库
binlog-ignore-db=mysql
注:一定要加入到加到mysqld下面,如果加入的位置或者信息不对的话,执行 show master status;结果为空;
如下图所示:
重启服务
[root@localhost ~]#systemctl restart mariadb
#进入mysql,查看数据库主机的配置文件状态
[root@localhost ~]# mysql -u root -p
MariaDB [(none)]> show master status;
结果如下:
注意:查看主服务器,出现以上类似信息;如果看不见以下结果或者为空的话,说明my.cnf配置文件配置的有问题,请检查。
这里记住File的值:mysql-bin.000002和Position的值:667,后面会用到。
从服务器配置:
配置MySQL从服务器的my.cnf文件;区别就是server-id不一样
在/etc/my.cnf 添加如下内容
#设置服务器ID,为1的表示为主服务器;如果服务器没有以下配置,添加,如果有就跳过。
server-id=2
#启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
log-bin=mysql-bin
#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行\
binlog-do-db=DB1
#不同步mysql系统数据库
binlog-ignore-db=mysql
接下来配置slave,进入从服务器的mysql控制台配置下:
[root@localhost ~]# mysql -uroot -p
MariaDB [(none)]> slave stop;
MariaDB [DB1]> change master to master_host=’192.168.72.232′,master_user=’root’,master_password=’root‘,master_log_file=’mysql-bin?.000002’,master_log_pos=667;
说明:change master to master_host=‘主服务器’,master_user=‘mysql用户名’,master_password=‘mysql服务密码’,master_log_file=‘File值’,master_log_pos=Postion值;
然后重启从服务器mysql
MariaDB [(none)]> slave start; ###启动slave
最后我们查看主从同步是否正常:
主要是看 Slave_IO_Running 和 Slave_SQL_Runing 这两个参数是yes就说明主从配置完成。
如果Slave_IO_Running 是 No,可以参考方法:
方法如下:
重置slave.
slave stop;
reset slave;
slave start;
重新执行show slave status \G;
目前还有一个问题,centos7搭建lampp集成环境,mysql做主从,在show master status这一步,一直提示为空,尝试了各种办法,还是不行,最后我才选择手动搭建LAMP环境,这个问题就没了,如果有在lampp环境下主从复制搭建成功的小伙伴,可以留言,让小弟请教请教