Centos7 + Mariadb主从配置
warning:
这篇文章距离上次修改已过486天,其中的内容可能已经有所变动。
环境:
主服务器:192.168.100.3 系统 Centos7 test1
从服务器:192.168.100.6 系统 Centos7 test2
主服务器配置:
安装mariadb数据库
[root@test1 ~]# yum install mariadb mariadb-server -y [root@test1 ~]# systemctl start mariadb.service [root@test1 ~]# mysql_secure_installation ##初始化数据库,设置root密码等等,需要注意允许root远程连接(实际生产环境中可以另起账号) [root@test1 ~]# 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 ‘redhat‘ 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语句插入几行记录
将数据库备份到从服务器上
[root@test1 ~]# mysqldump -h localhost -u root -p DB1 > /root/1.sql [root@test1 ~]# scp -P10060 /root/1.sql root@192.168.100.6:/root/ ##使用SCP命令拷贝到从服务器(test2服务器上,ssh端口为10060)
从服务器配置:
从服务器按照上面的方法安装mariadb,创建一个空数据库DB1,不需要创建表,为了将主服务器上的mysql还原到从服务器上。
[root@test2 ~]#yum install mariadb mariadb-server -y [root@test2 ~]#systemctl start mariadb.service [root@test2 ~]# mysql_secure_installation [root@test2 ~]# mysql -u root -p MariaDB [(none)]> create database DB1; [root@test2 ~]# mysql -h localhost -u root -p DB1 < /root/1.sql
Mysql的主从服务器配置:
主服务器配置:
在/etc/my.cnf 添加如下内容:
注:一定要加入到加到mysqld下面,如果加入的位置或者信息不对的话,执行 show master status;结果为空;
配置如下:
#设置服务器ID,为1的表示为主服务器;如果服务器没有以下配置,添加,如果有就跳过。 server-id=1 ##启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。 log_bin=mysql-bin? ##需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行\ binlog-do-db=DB1 ##不同步mysql系统数据库 binlog-ignore-db=mysql
重启服务
[root@test1 ~]#systemctl restart mariadb.service 进入mysql,查看数据库主机的配置文件状态 [root@test1 ~]# mysql -u root -p MariaDB [(none)]> show master status;
查看主服务器,出现以上类似信息;如果看不见以下结果或者为空的话,说明my.cnf配置文件配置的有问题,请检查即可。
这里记住File的值:mysql-bin.000003和Position的值:663,后面会用到。
从服务器配置:
配置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@test2 ~]# mysql -uroot -p MariaDB [(none)]> slave stop; MariaDB [DB1]> change master to master_host=’192.168.100.3′,master_user=’root’,master_password=’redhat‘,master_log_file=’mysql-bin?.000003’,master_log_pos=663; 说明:change master to master_host='主服务器',master_user='mysql用户名', master_password='mysql服务密码',master_log_file='File值',master_log_pos=Postion值; MariaDB [(none)]> slave start; ###启动slave
最后我们查看主从同步是否正常:
MariaDB [(none)]> show slave status \G;
主要是看 Slave_IO_Running 喝Slave_SQL_Runing 这两个参数是yes就说明主从配置完成。
如果Slave_IO_Running 是 No,可以参考方法:
方法如下:
重置slave.
slave stop;
reset slave;
slave start;
重新执行show slave status \G;