MySQL主从复制小结

MySQL主从复制小结mysql

两台服务器做此实验,信息以下:sql

IP                                       机器名称                            操做系统版本                            数据库版本数据库

192.168.101.81                  my-master                         Centos7.5_64                            mysql 5.7vim

192.168.101.82                  my-slave                            Centos7.5_64                            mysql 5.7安全

1、mysql的经典主从复制服务器

      一、初始化环境(两台机器上都操做)网络

    a)安装相关的环境包:yum –y install vim wget lrzsz ntpdate多线程

    b)同步时间:ntpdate -u times.aliyun.com并发

    c)上传mysql80-community-release-el7-1.noarch到服务器上ide

    d) rpm -ivh mysql80-community-release-el7-1.noarch.rpm

    e) vim /etc/yum.repos.d/mysql-community.repo

    将mysql8.0的enable=1修改成enable=0;而后将将mysql5.7的enable=0修改成enable=1

    f)安装数据库 yum clean all && yum makecache fast  && yum -y install mysql mysql-devel mysql-server

    g)systemctl start mysqld && systemctl enable mysqld

    h)grep password /var/log/mysql.log中找到密码,而后用找到的密码登陆数据库: mysql –u root –p   回车后输入初始化安装mysql生成的密码

    i)登陆后用alter user ‘root’@ ‘localhost’identified by ‘新密码’;来修改密码

    g)用mysql_secure_installation命令根据提示对数据库作安全,一路回车

      二、在主库my-master上操做以下

          a)修改主机名:hostname my-master && echo ‘my-master’> /etc/hostname  退出后从新登陆就能够了

    b)登陆数据库(mysql –u root –p新密码)后对从服务器同步用户受权:  grant replication  slave  on *.* to ‘wangtao’@’192.168.101.82’identified by ‘Wangta0+007’;

          c)编辑/etc/my.cnf文件在[mysqld]中加入如下内容

              server-id=81              

              log-bin=mysql-bin       

              binlog-ignore-db=mysql

    d) systemctl restart mysqld

    e)登陆数据库(mysql –u root –p新密码)后用’show master status ;’查看信息

image.png

三、在主库my-slave上操做以下:

           a)修改主机名:hostname my-slave && echo ‘my-slave’> /etc/hostname  退出后从新登陆就能够了

           b)编辑/etc/my.cnf文件在[mysqld]中加入如下内容

              server-id=82              必须为 1 到 232–1 之间的一个正整数值

              read-only                            只读设置

           c) systemctl restart mysqld

           d) 登陆数据库(mysql –u root –p新密码)设置同步

              change master to master_host='192.168.101.81',master_user='wangtao' , master_password=' Wangta0+007',master_log_file='mysql-bin.000003',master_log_pos=106;

        start slave;

           e)查看同步状态

              show slave status \G;  当Slave_IO_Running: Yes 与Slave_SQL_Running: Yes  说明同步成功

      四、插入测试数据测试(略)

2、mysql的gtid主从复制

      一、初始化环境(两台机器上都操做)

    a)安装相关的环境包:yum –y install vim wget lrzsz ntpdate

    b)同步时间:ntpdate -u times.aliyun.com

    c)上传mysql80-community-release-el7-1.noarch到服务器上

    d) rpm -ivh mysql80-community-release-el7-1.noarch.rpm

    e) vim /etc/yum.repos.d/mysql-community.repo

将mysql8.0的enable=1修改成enable=0;而后将将mysql5.7的enable=0修改成enable=1

    f)安装数据库 yum clean all && yum makecache fast  && yum -y install mysql mysql-devel mysql-server

    g)systemctl start mysqld && systemctl enable mysqld

    h)grep password /var/log/mysql.log中找到密码,而后用找到的密码登陆数据库: mysql –u root –p   回车后输入初始化安装mysql生成的密码

    i)登陆后用alter user ‘root’@ ‘localhost’identified by ‘新密码’;来修改密码

    g)用mysql_secure_installation命令根据提示对数据库作安全,一路回车

      二、在主库my-master上操做以下

          a)修改主机名:hostname my-master && echo ‘my-master’> /etc/hostname  退出后从新登陆就能够了

    b)登陆数据库(mysql –u root –p新密码)后对从服务器同步用户受权:  grant replication  slave  on *.* to ‘wangtao’@’192.168.101.82’identified by ‘Wangta0+007’;

          c)编辑/etc/my.cnf文件在[mysqld]中加入如下内容

             server-id=81

 gtid-mode=ON

 enforce-gtid-consistency

 log-bin=mysql-bin

 log-slave-updates

 binlog_ignore_db=mysql

    d) systemctl restart mysqld

    e)登陆数据库(mysql –u root –p新密码)后用’show master status ;’查看信息

image.png

      三、在主库my-slave上操做以下:

           a)修改主机名:hostname my-slave && echo ‘my-slave’> /etc/hostname  退出后从新登陆就能够了

           b)编辑/etc/my.cnf文件在[mysqld]中加入如下内容

              server-id=82

  gtid-mode=ON

  enforce-gtid-consistency

  read-only             只读设置

  log-slave-updates                      

           c) systemctl restart mysqld

           d) 登陆数据库(mysql –u root –p新密码)设置同步

              change master to master_host='192.168.101.81',master_user='wangtao' , master_password=' Wangta0+007', master_auto_position=1;

              start slave;

           e)查看同步状态

              show slave status \G;  当Slave_IO_Running: Yes 与Slave_SQL_Running: Yes  说明同步成功

3、GTID与经典主从的区别

1.不用手动定位pos和binlog的位置,添加参数master_auto_position=1便可 

2.多线程并发复制,Slave-parallel-workers=0,1,2(禁用,单线程,两个线程)

master数据库有改动,好比DML,存入bin-log中,

备份到主数据库中,网络I/O才去master给slave去取数据

因此经典模式下通常手动设置给slave备份,由于必定要保证主被数据同样,自动容易出问题。

推荐使用mysql5.7

       下篇博文引入mariadb gelare cluster同步,请你们多多指教!

相关文章
相关标签/搜索