cd /mnt
wget https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm #下載擴展rpm
rpm -ivh mysql80-community-release-el7-2.noarch.rpm --nodeps
注意:如果安裝過mysql其他版本的擴展noarch,例如mysql-community-release-el7-5.noarch,會報錯如下:
[root@localhost Download]# rpm -ivh mysql80-community-release-el7-2.noarch.rpm --nodeps
Preparing... ################################# [100%]
file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql from install of mysql80-community-release-el7-2.noarch conflicts with file from package mysql-community-release-el7-5.noarch
file /etc/yum.repos.d/mysql-community-source.repo from install of mysql80-community-release-el7-2.noarch conflicts with file from package mysql-community-release-el7-5.noarch
file /etc/yum.repos.d/mysql-community.repo from install of mysql80-community-release-el7-2.noarch conflicts with file from package mysql-community-release-el7-5.noarch
解決辦法:先卸載mysql-community-release-el7-5.noarch
rpm -e mysql-community-release-el7-5.noarch --nodeps
然後安裝mysql80-community-release-el7-2.noarch.rpm
rpm -ivh mysql80-community-release-el7-2.noarch.rpm --nodeps
安裝不同版本的mysql參考文檔:
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
切換mysql源
sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community
yum install -y mysql-community-server #安裝mysql
systemctl start mysqld
grep 'temporary password' /var/log/mysqld.log #mysql的初始密碼
#mysql root登錄
mysq -uroot -p密碼
#執行
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密碼'; #更改root密碼
CREATE USER 'sync'@'%' IDENTIFIED BY 'Samsung.123';
GRANT REPLICATION SLAVE ON *.* TO 'sync'@'%' IDENTIFIED BY 'Samsung.123' WITH GRANT OPTION;
#修改master的配置文件
vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=22 #數值在1-231,可自行設置。
#binlog-do-db=test #要同步test數據庫,要同步多個數據庫就多加幾個replicate-do-db=數據庫名
#binlog-ignore-db=mysql #忽略mysql,即不同步mysql數據庫。
innodb_flush_log_at_trx_commit=2
sync_binlog=1000
systemctl restart mysqld #重啓mysql
mysql -uroot -p密碼 #進入數據庫
#執行
show master status; #記住File和Position的信息,在slave中有用。
#修改slave的配置文件
vim /etc/my.cnf
[mysql]
server-id=23 #數值在1-231,可自行設置,但是需大於master的數值。
#replicate-do-db=test #指定要複製test數據庫裏的數據,不指定即默認同步所有數據庫的數據。
#replicate-ignore-db=mysql #忽略mysql數據庫,即不復制mysql數據庫裏的數據。
#relay-log=mysqld-relay-bin #清除bin文件,具體使用方法,需要請教一下,百度的看不懂。
systemctl restart mysqld
mysql -uroot -p密碼
#執行
stop slave;
CHANGE MASTER TO
MASTER_HOST='master的ip地址',
MASTER_USER='sync(master中創建的同步賬號)',
MASTER_PASSWORD='密碼(master中同步中號的密碼)',
MASTER_PORT=3306,
MASTER_LOG_FILE='(master中的File信息)'
MASTER_LOG_POS='(master中的Position信息)';
start slave;
show slave status \G;
#Seconds_Behind_Master: 0 #表示已同步
注:若Slave_SQL_Running: no,請重複執行一下命令,直到yes爲止:
stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;
主從複製搭建好之後,驗證:
master數據庫,root登錄,創建一個數據庫,觀察在slave上有沒有自動創建對應的庫。
mysql -uroot -p密碼
create database test;