1、关闭防火墙
使用命令行关闭防火墙
在Ubuntu系统中,可以使用以下命令关闭防火墙:
sudo ufw disable
执行该命令后,系统会提示是否要关闭防火墙,确认后即可关闭防火墙。
查看防火墙状态
使用以下命令可以查看防火墙当前的状态:
sudo ufw status
如果防火墙已经关闭,则会显示如下信息:
Status: inactive
如果防火墙处于开启状态,则会显示如下信息:
Status: active
当前演示IP:
主库IP:192.168.91.152
从库IP:192.168.91.153
2、配置主库(192.168.91.152)
修改配置文件
vim /etc/my.cnf
或
vim /etc/mysql/my.cnf
[mysqld]
#id要确保在局域网环境里是唯一的
server-id=1
#1代表只读,0代表可读写
read-only=0
#忽略的数据,指不需要同步的数据库,如需要请把以下的#注释符号删掉即可
#lbinlog-ignore-db=mysql
#指定同步的数据库,如需要请把以下的#注释符号删掉即可
#binlog-do-db=db_001
修改后,重启mysql服务
service mysqld restart
或
service mysql restart
进入mysql:
mysql -u root -p
创建用户:
-- 创建用户并设置密码
CREATE USER 'test123'@'%' IDENTIFIED WITH mysql_native_password BY 'Root@123456';
-- 赋予用户全部权限
GRANT ALL PRIVILEGES ON *.* TO 'test123'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
显示当前主服务器(Master)二进制日志的状态信息
show master status;
记录一下File值和Position值
File值:binlog.000006
Position值:157
3、配置从库(192.168.91.153)
修改配置文件
vim /etc/my.cnf
或
vim /etc/mysql/my.cnf
[mysqld]
#id要确保在局域网环境里是唯一的
server-id=2
#1代表只读,0代表可读写
read-only=1
#忽略的数据,指不需要同步的数据库,如需要请把以下的#注释符号删掉即可
#lbinlog-ignore-db=mysql
#指定同步的数据库,如需要请把以下的#注释符号删掉即可
#binlog-do-db=db_001
修改后,重启mysql服务
service mysqld restart
或
service mysql restart
进入mysql:
mysql -u root -p
修改复制源信息,指定新的主服务器
mysql命令行输入:
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='192.168.91.152',
SOURCE_USER='test123',
SOURCE_PASSWORD='Root@123456',
SOURCE_LOG_FILE='binlog.000006',
SOURCE_LOG_POS=157;
-- 启动主从复制
START REPLICA;
-- 显示从库的状态信息
SHOW SLAVE STATUS \G;
成功了
4、开始测试
分别在主库、从库查看所有数据库列表:
SHOW DATABASES;
主库:
从库:
在主库执行以下SQL语句:
-- 创建数据库 db_001
CREATE DATABASE IF NOT EXISTS db_001 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 切换到数据库 db_001
USE db_001;
-- 创建表 example_table
CREATE TABLE IF NOT EXISTS example_table (
id INT AUTO_INCREMENT PRIMARY KEY, -- 主键,自增长整数类型
name VARCHAR(50) NOT NULL COMMENT '姓名', -- 姓名,最大长度为50的字符串,不允许为空
age INT COMMENT '年龄', -- 年龄,整数类型
email VARCHAR(100) COMMENT '电子邮件' -- 电子邮件,最大长度为100的字符串
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 插入数据
INSERT INTO example_table (name, age, email) VALUES
('张三', 25, 'zhangsan@example.com'),
('李四', 30, 'lisi@example.com'),
('王五', 22, 'wangwu@example.com');
分别在主库、从库查看所有数据库列表:
SHOW DATABASES;
主库:
从库:
可以看到,从库和主库同步了
常见问题:
问题1:Slave_IO_Running: No
我是直接克隆的虚拟机,主库和从库的uuid一致了,所以需要修改一下
搜索auto.cnf文件
find / -iname "auto.cnf"
找到:/var/lib/mysql/auto.cnf
vim /var/lib/mysql/auto.cnf
修改UUID,要保证唯一性
- 将两台机器的UUID改成不一样就行
修改后,重启mysql服务
service mysqld restart
或
service mysql restart
进入mysql
mysql -u root -p
-- 启动主从复制
start replica;
-- 显示从库的状态信息
SHOW SLAVE STATUS \G;
成功了
问题2:ERROR 3021 (HY000): This operation cannot be performed with a running replica io thread; run STOP REPLICA IO_THREAD FOR CHANNEL '' first.
原因:
从库已经配置过,需要先停止,然后重置一下
停止:
stop replica;
重置:
reset replica;
重新设置:
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='192.168.91.152',
SOURCE_USER='test123',
SOURCE_PASSWORD='Root@123456',
SOURCE_LOG_FILE='binlog.000006',
SOURCE_LOG_POS=157;
-- 启动
START REPLICA;