安装自动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;

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐