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 ;’查看信息
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 ;’查看信息
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同步,請大家多多指教!