安装自动mysql
更新包列表
sudo apt update
安装 MySQL Server
sudo apt install mysql-server
启动 MySQL 服务
sudo systemctl start mysql
设置 MySQL 服务开机自启
sudo systemctl enable mysql
运行安全配置脚本
sudo mysql_secure_installation
按提示进行设置:
输入当前的 root 密码(如果有的话)。
设置新的 root 密码。
删除匿名用户。
禁用 root 远程登录。
删除测试数据库。
重新加载权限表。
登录 MySQL
sudo mysql -u root -p
准备两台虚拟机,需要提前安装好MySQL
数据库
主从库 | IP地址 |
---|---|
主库 | 192.168.19.43 |
从库 | 192.168.19.44 |
修改主库服务器的MySQL
核心配置文件/etc/mysql/mysql.conf.d/mysqld.cnf
,并添加如下配置信息:
[mysqld]
...
# 开启二进制日志(必须)
log-bin = mysql-bin
# MySQL服务ID,保证整个集群环境中唯一,默认为1(必须)
server-id = 1
# 二进制日志格式,默认ROW(可选)
binlog_format = ROW
# 忽略的数据,不需要同步的数据库
# binlog-ignore-db = db1
# binlog-ignore-db = db2
# 指定同步的数据库
# binlog-do-db = db3
重启MySQL
服务器。
systemctl restart mysql
# 创建zking用户,并设置密码,该用户可在任意主机连接该MySQL服务
create user 'zking'@'%' identified with mysql_native_password by 'zking1234';
# 为'zking'@'%'用户分配主从复制权限
grant replication slave on *.* to 'zking'@'%';
登录MySQL
数据库,创建远程连接的账号,并授予主从复制权限。
# 创建zking用户,并设置密码,该用户可在任意主机连接该MySQL服务
create user 'zking'@'%' identified with mysql_native_password by 'zking1234';
# 为'zking'@'%'用户分配主从复制权限
grant replication slave on *.* to 'zking'@'%';
通过指令,查看二进制日志坐标
show master status;
从库配置
修改从库服务器的MySQL
核心配置文件/etc/mysql/mysql.conf.d/mysqld.cnf
,并添加如下配置信息:
[mysqld]
...
# 开启二进制日志(必须)
log-bin = mysql-bin
# MySQL服务ID,保证整个集群环境中唯一,默认为1(必须)
server-id = 2
# 二进制日志格式,默认ROW(可选)
binlog_format = ROW
# 是否只读,1代表只读,0代表读写
read-only = 1
重启MySQL
服务器。
systemctl restart mysql
3)登录`MySQL`数据库,设置主库配置。
- `MySQL8.0.23`之前的版本,执行如下`SQL`语句:
change master to master_host='xxx.xxx.xxx.xxx',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos=xxx;
change master to master_host='192.168.19.43',master_user='root',master_password='sasa',master_log_file='mysql-bin.000001',master_log_pos=154;
-
MySQL8.0.23
之后的版本,执行如下SQL
语句:
change replication source to source_host='192.168.100.128',source_user='root',source_password='MyP@ssw0rd',source_log_file='mysql_bin.000027',source_log_pos=158;
开启同步操作
# 8.0.22之后
start replica;
# 8.0.22之前
start slave;
查看主从同步状态
# 8.0.22之后
show replica status;
# 8.0.22之前
show slave status;
修改/var/lib/mysql/auto.cnf
文件。将server-uuid
属性修改为唯一值即可。
[auto]
server-uuid = 任意uuid
修改完毕保存并退出,最后重启MySQL
服务后,并再次登录MySQL
查看主从复制是否成功。
故障解决
mysql> stop slave;
mysql> set global sql_slave_skip_counter=1; #指定跳过事务个数
mysql> start slave;