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;