MySQL主從複製小結

MySQL主從複製小結

兩臺服務器作此實驗,信息如下:

IP                                       機器名稱                            操作系統版本                            數據庫版本

192.168.101.81                  my-master                         Centos7.5_64                            mysql 5.7

192.168.101.82                  my-slave                            Centos7.5_64                            mysql 5.7

一、mysql的經典主從複製

      1、初始化環境(兩臺機器上都操作)

    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命令根據提示對數據庫做安全,一路回車

      2、在主庫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

3、在主庫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  說明同步成功

      4、插入測試數據測試(略)

二、mysql的gtid主從複製

      1、初始化環境(兩臺機器上都操作)

    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命令根據提示對數據庫做安全,一路回車

      2、在主庫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

      3、在主庫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  說明同步成功

三、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同步,請大家多多指教!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章