参考Ubuntu 搭建 MySQL 主从
系统版本:Ubuntu 18.04
MySQL 版本:MySQL 5.7.x
主 MySQL 服务器 IP:192.168.211.136
从 MySQL 服务器 IP:192.168.21.137
环境:两台虚拟机即可
建议:从上往下,按顺序执行
安装数据库
# 主、从机都需要安装
sudo apt install mysql-server
登录数据库
# 查看mysql初始化登录和密码
sudo cat /etc/mysql/debian.cnf
# 得到以下结果
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint # 登录用户名
password = HYmNHYVh12W***** # 初始密码
socket = /var/run/mysqld/mysqld.sock
主
数据库配置(192.168.211.136)
# 登录mysql
mysql -udebian-sys-maint -pHYmNHYVh12W*****
# 进入mysql数据库
# 选择mysql库
use mysql;
# 创建允许远程访问的账户和密码
CREATE USER 'master'@'%' IDENTIFIED BY 'master'; # 账户密码都为master
# 允许远程访问
GRANT ALL PRIVILEGES ON *.* TO 'master'@'*.*.*.*' IDENTIFIED BY 'master' WITH GRANT OPTION;
# 更新设置
flush privileges;
# 退出mysql
exit;
从
数据库配置(192.168.211.137)
# 登录mysql
mysql -udebian-sys-maint -pHYmNHYVh12W*****
# 进入mysql数据库
# 选择mysql库
use mysql;
# 创建允许远程访问的账户和密码
CREATE USER 'slave'@'%' IDENTIFIED BY 'slave'; # 账户密码都为slave
# 允许远程访问
GRANT ALL PRIVILEGES ON *.* TO 'slave'@'*.*.*.*' IDENTIFIED BY 'slave' WITH GRANT OPTION;
flush privileges;
# 退出mysql
exit;
数据库配置文件修改(192.168.211.136和192.168.211.137都需要进行以下动作)
# ubuntu shell
# 编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# mysqld.cnf 文件 插入以下内容 `test` 为同步的数据库
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
binlog_cache_size= 4m
max_binlog_cache_size= 512m
binlog_do_db = test
# 将mysqld.cnf中的 bind-address= 127.0.0.1 注释,注释才能最终允许远程访问
# bind-address = 127.0.0.1
# 退出保存文件:wq
# 重启mysql
sudo /etc/init.d/mysql restart
主机授权给从机的同步(在192.168.211.136操作)
# 登录mysql
mysql -uroot -p # 使用已配置好的账户登录即可
# 创建数据库
create database test;
# `主数据`库授权给从`数据库`
grant replication slave on *.* to 'slave'@'192.168.211.137' identified by 'slave';
# 更新设置
flush privileges;
# 退出mysql
exit;
192.168.211.137开启同步
# 登录mysql
mysql -uroot -p # 替换成已配置好的账户登录
# 登录成功后
start slave;
# 查看启动状态
show slave status\G;
成功状态如下
至此,配置成功!
# 在主数据库中的,test库 ,创建表table_first
# 在从数据库中,show tables,若table_first存在,则表示已配置成功
配置失败检查建议
# 在 show slave\G;的显示结果中,如果出现以下提示,就是从数据库连接主数据库失败
Slave_IO_Running: Connecting
# 1. 手动检查远程master账户,的远程登录是否启动成功
# 2. 检查 /etc/mysql/mysql.conf.d/mysqld.cnf文件中内容行 bind-address= 127.0.0.1,是否注释
# 若未注释,需要注释改行,并且重启数据库,/etc/init.d/mysql restart
# 3. 修改完成后,重新拉起同步slave,在从机中(192.168.211.137),数据库中执行
stop slave;
start slave;
show slave status\G;