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 ;’查看信息
三、在主庫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 ;’查看信息
三、在主庫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同步,請你們多多指教!