MySQL一主多从安装配置

安装环境:
VmWare :10.0.7 build-2844087
CentOS :Linux release 7.3.1611 (Core)
MySQL :5.7

一、CentOS安装MySQL
在三台服务器上用一样的步骤安装
服务器1:192.168.220.128
服务器2:192.168.220.129
服务器3:192.168.220.130
1、
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
2、
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
3、
sudo yum install mysql-server
4、
vim /etc/my.cnf
在[mysqld]下添加
#数据库编码
character-set-server=utf8
#为了使用弱密码
validate_password_policy=0
5、启动MySQL服务
service mysqld start
6、设置root密码
mysql -u root -p
回车
use mysql
use mysql;
以下带 > 的全部是SQL语句,以分号结尾。
> update user set password=password(‘123456′) where user =’root’;
> GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
> flush privileges;

7、允许远程连接
开放3306端口
firewall-cmd –zone=public –add-port=3306/tcp –permanent
重启防火墙
systemctl restart firewalld.service

二、MySQL一主二从配置
主:192.168.220.128
从:192.168.220.129
从:192.168.220.130

1、主机配置
vim /etc/my.cnf
在[mysqld]下添加
server-id=1
log-bin=/var/lib/mysql/mysql-bin
注意:这个配置必须添加在[mysqld]下面,如果是[mysqld_safe]下面,不会起任何作用

2、主服务器创建数据库
创建一个叫fish的数据库,可以用Navicat连接后创建

3、主服务器创建专门用于主从复制的用户
mysql -u root -p
> create user repl identified by ‘repl’;
> GRANT REPLICATION SLAVE ON *.* TO ‘repl’ @’%’ IDENTIFIED BY ‘repl’ ;
> exit;
4、主服务器重启服务并查看master配置
service mysqld restart
> show variables like “log_bin”;

ON为正常,OFF为不正常
> show master status;

File和Postion需要记下来,用在从服务器配置中。

5、在从服务器上配置:
mysql -u root -p
> change master to master_host=’192.168.220.128′, master_port=3306, master_user=’repl’, master_password=’repl’, master_log_file=’mysql-bin.000002′, master_log_pos=120;
注意:上面的这个文件名称和位置是从第4步来的,不能随便写,否则无法读取主服务器的二进制文件。
> flush privileges;
> start slave;

6、查看从库的状态
> show slave status\G;

其中,下面这两项必须都是YES,才代表开启成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

7、测试
因为数据库不会自动同步,先在129、130上创建一个fish数据库。
在fish数据库里面创建一个cat表。插入一条数据。
可以看到,129、130中也出现了这个表,数据也一致。