MySQL主从同步
作用
减少单台服务器的压力,防止单点故障
部署
主库
编辑/etc/mysql/mysql.conf.d/mysqld.cnf
shell
log_bin=mysql-bin
server-id=1 #服务器的id,再主从数据库里不能重复
重启MySQL服务器
shell
systemctl restart mysql
连接mysql,并创建用于主从复制的用户,赋予该用户权限
mysql -u root -pxxx -h host -P port #xxx是mysql中用户root的密码,host是ip,port是端口号
create user 'username'@'host' identified by "password" #username可以替换成任意的用户名;host表示那个主机可以连接这台服务器,%表示任意主机都可以;password表示该用户的密码
grant slave replication on *.* to 'username'@'root'; #授权,其他同上
show master status \G;#查看master状态,主要关注File,Position
从库
编辑/etc/mysql/mysql.conf.d/mysqld.cnf,并重启mysql服务器
server-id=2 #服务器的id,再主从数据库里不能重复
systemctl restart mysql
连接mysql,修改master
sql
mysql -u root -pxxx -h host -P port #xxx是mysql中用户root的密码,host是ip,port是端口号
# username 是主库中创建的用户名
# password 是主库中创建的用户对应的密码
# PORT 是主库所占用的端口
# HOST 是主库的ip,如果mysql是服务器的话就是机器的公网ip
# FILE 是主库中执行show master status \G;结果当中的File字段的值
# POS 是主库中执行show master status \G;结果当中的Position字段的值
CHANGE MASTER TO MASTER_USER="username",MASTER_PASSWORD="password",MASTER_PORT="PORT",MASTER_HOST="HOST",
MASTER_LOG_FILE="FILE",MASTER_LOG_POS="POS";
MySQL中启动slave
sql
start slave;
检查主从连接状态
sql
show slave status\G;