centos7最详细的MySQL数据库主从复制

环境

两台MySQL数据库
mysql1 192.168.1.10 master
mysql2 192.168.1.20 slave
我这里用的是mariadb进行搭建,安装方法与其他方法会不同,但互为主从大致方法都是一样的

关闭防火墙、selinux

两台同样的配置

systemctl stop firewalld
systemctl disable firewalld
vi /etc/selinux/config 
      7 SELINUX=disabled
      setenforce 0 #宽容模式

安装MariaDB

[root@mysql1 ~]# yum -y install mariadb*
[root@mysql2 ~]# yum -y install mariadb*

msyql1

vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql           //这两行是默认MySQL位置,编译安装需要
socket=/var/lib/mysql/mysql.sock //自己指定,此安装的是mariadb
log-bin=my1log     #指定binlog日志名称
server-id=1     #主机编号,第二台这里是2
#这两行加到配置文件的最下面可能会没有效果

保存退出

systemctl start mariadb

注意:如果不成功删除以前的binlog日志

进入mysql
创建用户

[root@mysql1 ~]# mysql
		 #给slave这个用户复制所有主机的权限,可以根据需求自己改
MariaDB [(none)]> grant replication slave,replication client on *.* to 'slave'@'%' identified by '1';

备份master的数据

[root@mysql1 ~]# mysqldump --all-databases --single-transaction --master-data=1 --flush-logs > /all.sql

将master的备份传给slave端

[root@mysql1 ~]# scp -r /all.sql 192.168.1.20:/

mysql2

vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=2  #这里改成2
~~log-bin=my1log  #此时不用添加,使用双主的时添加这一行~~  

保存退出
重启数据库

[root@mysql2 ~]# systemctl start mariadb

导入数据对数据进行同步

MariaDB [(none)]> source /all.sql

用从机的账户登陆(不是授权的账户哦)

    指定主服务器信息
        mysql >help change master to                  查看从mysql编辑文件
        mysql > \e					 #写入下面配置
              CHANGE MASTER TO
              MASTER_HOST='192.168.1.10',  		 #master端ip地址
              MASTER_USER='slave',    			 #master端-授权用户名
              MASTER_PASSWORD='1',			 #master端-授权用户密码
              MASTER_PORT=3306,                          #master端数据库端口                                         
              MASTER_LOG_FILE='my1log.000005',		 #master端现行的日志文件
              MASTER_LOG_POS=254, 			 #master端现行日志文件所处的日志位置
              MASTER_CONNECT_RETRY=10;                   #默认尝试次数(可以不写)
      //查看mysql1端现行的日志文件及所处的位置
 //  MariaDB [(none)]> show master status;
//+---------------+----------+--------------+------------------+
//| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
//+---------------+----------+--------------+------------------+
  | my1log.000005 |      245 |              |                  |
//+---------------+----------+--------------+------------------+
//1 row in set (0.00 sec)

启动服务

mysql> start slave;

//查看IO线程和SQL线程是否开启。如果没成功:删除从的binlog重启服务
mysql> show slave status \G; 

//出现双yes表示主从以完成
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

互为主从在重复slave端上的操作就行了

posted @ 2019-09-17 14:04  雪花凌落的盛夏  阅读(16)  评论(0编辑  收藏  举报  来源