1、项目背景
由于AWS的RDS是收费的,所以在我的项目中,利用EC2搭建MySQL5.7一主多从方案。这里我的项目中,目前采用一主两从方案,为了高可用性,这里用了2个可用区域,可用区A,可用区B。
准备的EC2机器如下:
master 172.31.76.147 可用区A
slave1 172.31.76.148 可用区A
slave2 172.31.73.136 可用区B
2、rpm安装msql yum源 (所有机器执行)
在所有机器执行下面命令:
$> wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'
$> sudo rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
$> yum repolist all | grep mysql
$> yum install -y mysql-community-server
3、启动MySQL(所有机器执行)
在所有机器执行下面命令:
$> systemctl enable mysqld
$> systemctl start mysqld
$> systemctl status mysqld
4、修改MySQL localhost临时密码(所有机器执行)
查看root临时密码:
$> grep "password" /var/log/mysqld.log
登录root账户:
$> mysql -uroot -p
修改root密码:
mysql> set global validate_password_policy=0;
mysql> alter user 'root'@'localhost' identified by 'abc!@#$';
修改root账户能够远程访问:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
5、在写库master机器上创建同步用户
mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
给同步账户slave授权,这里以同步smarthome数据库为例:
mysql> GRANT SELECT,UPDATE,INSERT,DELETE ON smarthome to 'slave'@'%';
mysql> GRANT ALL PRIVILEGES ON bosma-smart.* TO 'slave'@'%';
mysql> GRANT SELECT ON mysql.user TO 'slave'@'%';
mysql> GRANT SELECT ON mysql.db TO 'slave'@'%';
mysql> GRANT SELECT ON mysql.tables_priv TO 'slave'@'%';
mysql> GRANT SHOW DATABASES ON *.* TO 'slave'@'%';
mysql> flush privileges;
6、永久关闭selinux(所有机器执行)
所有机器上执行:
$> vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=di