Centos7 + Mariadb主从配置

warning: 这篇文章距离上次修改已过289天,其中的内容可能已经有所变动。

环境:

主服务器: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;

1371745-20200408140524266-341535924.png1371745-20200408140524266-341535924.png

赋予数据库DB1连接权限:

MariaDB [(none)]> grant all privileges on *.* to root@’%’ identified by ‘redhat‘ with grant option;
MariaDB [(none)]> flush privileges;
使用DB1创建一个表:
MariaDB [(none)]> use DB1;

1371745-20200408140603547-1498456989.png1371745-20200408140603547-1498456989.png

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语句插入几行记录

1371745-20200408140630616-841629470.png1371745-20200408140630616-841629470.png

将数据库备份到从服务器上

[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

1371745-20200408140848362-420362354.png1371745-20200408140848362-420362354.png

重启服务

[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

1371745-20200408141127835-862227291.png1371745-20200408141127835-862227291.png

接下来配置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;

1371745-20200408141347445-1212738020.png1371745-20200408141347445-1212738020.png

主要是看 Slave_IO_Running 喝Slave_SQL_Runing 这两个参数是yes就说明主从配置完成。

如果Slave_IO_Running 是 No,可以参考方法:

方法如下:

重置slave.

slave stop;

reset slave;

slave start;

重新执行show slave status \G;

添加新评论

icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif