MySQL的读写分离配置最佳实践
作者:xrkhy
解压包安装MySQL
下载安装包
打开MySQL官网==>https://dev.mysql.com/downloads/mysql/5.5.html#downloads
这里有两个版本:一个是最新版,一个是历史版本。我用的是历史版本
最新版本下载

选择不登录直接下载安装包

或者点击这里下载:https://www.jb51.net/softs/683429.html
历史版本

我这里选择8.0.39安装

我这里的版本是最新的mysql8.0.39
下载完成之后,将压缩包进行解压
压缩文件
将刚刚下载文件解压

这里我建议大家把自己的mysql放到D盘根目录下,防止后面出现问题,自己找的时候也方便(我就踩过这个坑)
新建 my.ini文件和mysqldata文件夹

修改文件夹名称
后面跟个端口号来区分是哪个端口号的MySQL

编写my.ini文件
[mysqld] # 设置3306端口 可以自己设置 port=3380 # 设置mysql的安装目录 basedir=D:\\MySQLReadWriteSeparation\mysql-8.0.39-winx64-3380 # 设置mysql数据库的数据的存放目录 datadir=D:\\MySQLReadWriteSeparation\mysql-8.0.39-winx64-3380\mysqldata # 开启慢日志 slow_query_log=1 long_query_time=2 # 允许最大连接数 max_connections=200 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=10 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION server-id=101 # 服务端使用的字符集默认为UTF8 character-set-server=utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 default_authentication_plugin=caching_sha2_password [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3380 # 设置默认字符集为UTF8MB4 default-character-set=utf8mb4
注意修改文件路径:basedir与datadir,端口号,server-id=唯一
初始化密码
cmd打开dos命令,以管理员身份运行,注意一定要用管理员身份运行否则生成的初始化密码可能不能用。

执行 mysqld --defaults-file=D:\MySQLReadWriteSeparation\mysql-8.0.39-winx64-3380\my.ini --initialize --console目录改为自己的,初始化数据库存储目录。

记住临时生成的密码,例如:aX!E7T/-+EQB
创建服务
使用命令创建服务,mysqld install MySQL3380 --defaults-file=D:\MySQLReadWriteSeparation\mysql-8.0.39-winx64-3380\my.ini
注意修改端口号和路径
结果如下

打开计算机管理

看到有MySQL3380即可

如果服务安装有问题,删除服务命令:
mysqld -remove 服务名
启动

重置密码
使用命令进入mysql -uroot -p -P端口号 ,进入控制台修改密码,这个密码是上面初始化的密码。

登录后如下

输入如下命令初始化密码为rootALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

刷新flush privileges;即可使用
注意不刷新不能用
刷新过后结果如下

到此命令行窗口直接关闭即可
navicat连接数据库
密码是root
端口号是3380


再来一个3381
根据上述的步骤再安装一个3381的

注意!! !!! !!! !!! !!! !!! !!!
你的mysql3381配置文件中的server-id这个值一定要和mysql8080的值不一样,否则你的读写分离时从库的Slave_IO_Running值为No
将自动启动改为手动启动
每次开机自启动会导致开机卡顿,所以改为手动。


结果如下:

MYSQL实现读写分离
运行sql文件
新建数据库,两个数据库都要新建如下的数据库

两个数据库都要运行SQL文件
/* Navicat Premium Data Transfer Source Server : MySQL3381 Source Server Type : MySQL Source Server Version : 80042 Source Host : localhost:3381 Source Schema : smbms Target Server Type : MySQL Target Server Version : 80042 File Encoding : 65001 Date: 28/10/2025 16:28:02 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for smbms_address -- ---------------------------- DROP TABLE IF EXISTS `smbms_address`; CREATE TABLE `smbms_address` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `contact` varchar(15) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '联系人姓名', `addressDesc` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '收货地址明细', `postCode` varchar(15) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '邮编', `tel` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '联系人电话', `createdBy` bigint NULL DEFAULT NULL COMMENT '创建者', `creationDate` datetime NULL DEFAULT NULL COMMENT '创建时间', `modifyBy` bigint NULL DEFAULT NULL COMMENT '修改者', `modifyDate` datetime NULL DEFAULT NULL COMMENT '修改时间', `userId` bigint NULL DEFAULT NULL COMMENT '用户ID', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_unicode_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of smbms_address -- ---------------------------- INSERT INTO `smbms_address` VALUES (1, '王丽', '北京市东城区东交民巷44号', '100010', '13678789999', 1, '2016-04-13 00:00:00', NULL, NULL, 1); INSERT INTO `smbms_address` VALUES (2, '张红丽', '北京市海淀区丹棱街3号', '100000', '18567672312', 1, '2016-04-13 00:00:00', NULL, NULL, 1); INSERT INTO `smbms_address` VALUES (3, '任志强', '北京市东城区美术馆后街23号', '100021', '13387906742', 1, '2016-04-13 00:00:00', NULL, NULL, 1); INSERT INTO `smbms_address` VALUES (4, '曹颖', '北京市朝阳区朝阳门南大街14号', '100053', '13568902323', 1, '2016-04-13 00:00:00', NULL, NULL, 2); INSERT INTO `smbms_address` VALUES (5, '李慧', '北京市西城区三里河路南三巷3号', '100032', '18032356666', 1, '2016-04-13 00:00:00', NULL, NULL, 3); INSERT INTO `smbms_address` VALUES (6, '王国强', '北京市顺义区高丽营镇金马工业区18号', '100061', '13787881234', 1, '2016-04-13 00:00:00', NULL, NULL, 3); -- ---------------------------- -- Table structure for smbms_bill -- ---------------------------- DROP TABLE IF EXISTS `smbms_bill`; CREATE TABLE `smbms_bill` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `billCode` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '账单编码', `productName` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '商品名称', `productDesc` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '商品描述', `productUnit` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '商品单位', `productCount` decimal(20, 2) NULL DEFAULT NULL COMMENT '商品数量', `totalPrice` decimal(20, 2) NULL DEFAULT NULL COMMENT '商品总额', `isPayment` int NULL DEFAULT NULL COMMENT '是否支付(1:未支付 2:已支付)', `createdBy` bigint NULL DEFAULT NULL COMMENT '创建者(userId)', `creationDate` datetime NULL DEFAULT NULL COMMENT '创建时间', `modifyBy` bigint NULL DEFAULT NULL COMMENT '更新者(userId)', `modifyDate` datetime NULL DEFAULT NULL COMMENT '更新时间', `providerId` bigint NULL DEFAULT NULL COMMENT '供应商ID', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 22 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_unicode_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of smbms_bill -- ---------------------------- INSERT INTO `smbms_bill` VALUES (1, 'BILL2016_001', '洗发水、护发素', '日用品-洗发、护发', '瓶', 500.00, 25000.00, 2, 1, '2014-12-14 13:02:03', NULL, NULL, 13); INSERT INTO `smbms_bill` VALUES (2, 'BILL2016_002', '香皂、肥皂、药皂', '日用品-皂类', '块', 1000.00, 10000.00, 2, 1, '2016-03-23 04:20:40', NULL, NULL, 13); INSERT INTO `smbms_bill` VALUES (3, 'BILL2016_003', '大豆油', '食品-食用油', '斤', 300.00, 5890.00, 2, 1, '2014-12-14 13:02:03', NULL, NULL, 6); INSERT INTO `smbms_bill` VALUES (4, 'BILL2016_004', '橄榄油', '食品-进口食用油', '斤', 200.00, 9800.00, 2, 1, '2013-10-10 03:12:13', NULL, NULL, 7); INSERT INTO `smbms_bill` VALUES (5, 'BILL2016_005', '洗洁精', '日用品-厨房清洁', '瓶', 500.00, 7000.00, 2, 1, '2014-12-14 13:02:03', NULL, NULL, 9); INSERT INTO `smbms_bill` VALUES (6, 'BILL2016_006', '美国大杏仁', '食品-坚果', '袋', 300.00, 5000.00, 2, 1, '2016-04-14 06:08:09', NULL, NULL, 4); INSERT INTO `smbms_bill` VALUES (7, 'BILL2016_007', '沐浴液、精油', '日用品-沐浴类', '瓶', 500.00, 23000.00, 1, 1, '2016-07-22 10:10:22', NULL, NULL, 14); INSERT INTO `smbms_bill` VALUES (8, 'BILL2016_008', '不锈钢盘碗', '日用品-厨房用具', '个', 600.00, 6000.00, 2, 1, '2016-04-14 05:12:13', NULL, NULL, 14); INSERT INTO `smbms_bill` VALUES (9, 'BILL2016_009', '塑料杯', '日用品-杯子', '个', 350.00, 1750.00, 2, 1, '2016-02-04 11:40:20', NULL, NULL, 14); INSERT INTO `smbms_bill` VALUES (10, 'BILL2016_010', '豆瓣酱', '食品-调料', '瓶', 200.00, 2000.00, 2, 1, '2013-10-29 05:07:03', NULL, NULL, 8); INSERT INTO `smbms_bill` VALUES (11, 'BILL2016_011', '海之蓝', '饮料-国酒', '瓶', 50.00, 10000.00, 1, 1, '2016-04-14 16:16:00', NULL, NULL, 1); INSERT INTO `smbms_bill` VALUES (12, 'BILL2016_012', '芝华士', '饮料-洋酒', '瓶', 20.00, 6000.00, 1, 1, '2016-09-09 17:00:00', NULL, NULL, 1); INSERT INTO `smbms_bill` VALUES (13, 'BILL2016_013', '长城红葡萄酒', '饮料-红酒', '瓶', 60.00, 800.00, 2, 1, '2016-11-14 15:23:00', NULL, NULL, 1); INSERT INTO `smbms_bill` VALUES (14, 'BILL2016_014', '泰国香米', '食品-大米', '斤', 400.00, 5000.00, 2, 1, '2016-10-09 15:20:00', NULL, NULL, 3); INSERT INTO `smbms_bill` VALUES (15, 'BILL2016_015', '东北大米', '食品-大米', '斤', 600.00, 4000.00, 2, 1, '2016-11-14 14:00:00', NULL, NULL, 3); INSERT INTO `smbms_bill` VALUES (16, 'BILL2016_016', '可口可乐', '饮料', '瓶', 2000.00, 6000.00, 2, 1, '2012-03-27 13:03:01', NULL, NULL, 2); INSERT INTO `smbms_bill` VALUES (17, 'BILL2016_017', '脉动', '饮料', '瓶', 1500.00, 4500.00, 2, 1, '2016-05-10 12:00:00', NULL, NULL, 2); INSERT INTO `smbms_bill` VALUES (18, 'BILL2016_018', '哇哈哈', '饮料', '瓶', 2000.00, 4000.00, 2, 1, '2015-11-24 15:12:03', NULL, NULL, 2); INSERT INTO `smbms_bill` VALUES (19, 'BILL2025_001', '醉大转弯', '鸭腿', '只', 15.00, 4500.00, NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO `smbms_bill` VALUES (20, 'BILL2025_001', '醉大转弯', '鸭腿', '只', 15.00, 4500.00, NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO `smbms_bill` VALUES (21, 'BILL2025_001', '醉大转弯', NULL, '只', 15.00, 4500.00, NULL, NULL, NULL, NULL, NULL, NULL); -- ---------------------------- -- Table structure for smbms_provider -- ---------------------------- DROP TABLE IF EXISTS `smbms_provider`; CREATE TABLE `smbms_provider` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `proCode` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '供应商编码', `proName` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '供应商名称', `proDesc` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '供应商详细描述', `proContact` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '供应商联系人', `proPhone` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '联系电话', `proAddress` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '地址', `proFax` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '传真', `createdBy` bigint NULL DEFAULT NULL COMMENT '创建者(userId)', `creationDate` datetime NULL DEFAULT NULL COMMENT '创建时间', `modifyDate` datetime NULL DEFAULT NULL COMMENT '更新时间', `modifyBy` bigint NULL DEFAULT NULL COMMENT '更新者(userId)', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_unicode_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of smbms_provider -- ---------------------------- INSERT INTO `smbms_provider` VALUES (1, 'BJ_GYS001', '北京三木堂商贸有限公司', '长期合作伙伴,主营产品:茅台、五粮液、郎酒、酒鬼酒、泸州老窖、赖茅酒、法国红酒等', '张国强', '13566667777', '北京市丰台区育芳园北路', '010-58858787', 1, '2013-03-21 16:52:07', NULL, NULL); INSERT INTO `smbms_provider` VALUES (2, 'HB_GYS001', '石家庄帅益食品贸易有限公司', '长期合作伙伴,主营产品:饮料、水饮料、植物蛋白饮料、休闲食品、果汁饮料、功能饮料等', '王军', '13309094212', '河北省石家庄新华区', '0311-67738876', 1, '2016-04-13 04:20:40', NULL, NULL); INSERT INTO `smbms_provider` VALUES (3, 'GZ_GYS001', '深圳市泰香米业有限公司', '初次合作伙伴,主营产品:良记金轮米,龙轮香米等', '郑程瀚', '13402013312', '广东省深圳市福田区深南大道6006华丰大厦', '0755-67776212', 1, '2014-03-21 16:56:07', NULL, NULL); INSERT INTO `smbms_provider` VALUES (4, 'GZ_GYS002', '深圳市喜来客商贸有限公司', '长期合作伙伴,主营产品:坚果炒货.果脯蜜饯.天然花茶.营养豆豆.特色美食.进口食品.海味零食.肉脯肉', '林妮', '18599897645', '广东省深圳市福龙工业区B2栋3楼西', '0755-67772341', 1, '2013-03-22 16:52:07', NULL, NULL); INSERT INTO `smbms_provider` VALUES (5, 'JS_GYS001', '兴化佳美调味品厂', '长期合作伙伴,主营产品:天然香辛料、鸡精、复合调味料', '徐国洋', '13754444221', '江苏省兴化市林湖工业区', '0523-21299098', 1, '2015-11-22 16:52:07', NULL, NULL); INSERT INTO `smbms_provider` VALUES (6, 'BJ_GYS002', '北京纳福尔食用油有限公司', '长期合作伙伴,主营产品:山茶油、大豆油、花生油、橄榄油等', '马莺', '13422235678', '北京市朝阳区珠江帝景1号楼', '010-588634233', 1, '2012-03-21 17:52:07', NULL, NULL); INSERT INTO `smbms_provider` VALUES (7, 'BJ_GYS003', '北京国粮食用油有限公司', '初次合作伙伴,主营产品:花生油、大豆油、小磨油等', '王驰', '13344441135', '北京大兴青云店开发区', '010-588134111', 1, '2016-04-13 00:00:00', NULL, NULL); INSERT INTO `smbms_provider` VALUES (8, 'ZJ_GYS001', '慈溪市广和绿色食品厂', '长期合作伙伴,主营产品:豆瓣酱、黄豆酱、甜面酱,辣椒,大蒜等农产品', '薛圣丹', '18099953223', '浙江省宁波市慈溪周巷小安村', '0574-34449090', 1, '2013-11-21 06:02:07', NULL, NULL); INSERT INTO `smbms_provider` VALUES (9, 'GX_GYS001', '优百商贸有限公司', '长期合作伙伴,主营产品:日化产品', '李立国', '13323566543', '广西南宁市秀厢大道42-1号', '0771-98861134', 1, '2013-03-21 19:52:07', NULL, NULL); INSERT INTO `smbms_provider` VALUES (10, 'JS_GYS002', '南京火头军信息技术有限公司', '长期合作伙伴,主营产品:不锈钢厨具等', '陈女士', '13098992113', '江苏省南京市浦口区浦口大道1号新城总部大厦A座903室', '025-86223345', 1, '2013-03-25 16:52:07', NULL, NULL); INSERT INTO `smbms_provider` VALUES (11, 'GZ_GYS003', '广州市白云区美星五金制品厂', '长期合作伙伴,主营产品:海绵床垫、坐垫、靠垫、海绵枕头、头枕等', '梁天', '13562276775', '广州市白云区钟落潭镇福龙路20号', '020-85542231', 1, '2016-12-21 06:12:17', NULL, NULL); INSERT INTO `smbms_provider` VALUES (12, 'BJ_GYS004', '北京隆盛日化科技', '长期合作伙伴,主营产品:日化环保清洗剂,家居洗涤专卖、洗涤用品网、墙体除霉剂、墙面霉菌清除剂等', '孙欣', '13689865678', '北京市大兴区旧宫', '010-35576786', 1, '2014-11-21 12:51:11', NULL, NULL); INSERT INTO `smbms_provider` VALUES (13, 'SD_GYS001', '山东豪克华光联合发展有限公司', '长期合作伙伴,主营产品:洗衣皂、洗衣粉、洗衣液、洗洁精、消杀类、香皂等', '吴洪转', '13245468787', '山东济阳济北工业区仁和街21号', '0531-53362445', 1, '2015-01-28 10:52:07', NULL, NULL); INSERT INTO `smbms_provider` VALUES (14, 'JS_GYS003', '无锡喜源坤商行', '长期合作伙伴,主营产品:日化品批销', '周一清', '18567674532', '江苏无锡盛岸西路', '0510-32274422', 1, '2016-04-23 11:11:11', NULL, NULL); INSERT INTO `smbms_provider` VALUES (15, 'ZJ_GYS002', '乐摆日用品厂', '长期合作伙伴,主营产品:各种中、高档塑料杯,塑料乐扣水杯(密封杯)、保鲜杯(保鲜盒)、广告杯、礼品杯', '王世杰', '13212331567', '浙江省金华市义乌市义东路', '0579-34452321', 1, '2016-08-22 10:01:30', NULL, NULL); INSERT INTO `smbms_provider` VALUES (16, '22', '22', '22', NULL, NULL, NULL, NULL, 2, NULL, NULL, NULL); -- ---------------------------- -- Table structure for smbms_role -- ---------------------------- DROP TABLE IF EXISTS `smbms_role`; CREATE TABLE `smbms_role` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `roleCode` varchar(15) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '角色编码', `roleName` varchar(15) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '角色名称', `createdBy` bigint NULL DEFAULT NULL COMMENT '创建者', `creationDate` datetime NULL DEFAULT NULL COMMENT '创建时间', `modifyBy` bigint NULL DEFAULT NULL COMMENT '修改者', `modifyDate` datetime NULL DEFAULT NULL COMMENT '修改时间', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_unicode_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of smbms_role -- ---------------------------- INSERT INTO `smbms_role` VALUES (1, 'SMBMS_ADMIN', '系统管理员', 1, '2016-04-13 00:00:00', NULL, NULL); INSERT INTO `smbms_role` VALUES (2, 'SMBMS_MANAGER', '经理', 1, '2016-04-13 00:00:00', NULL, NULL); INSERT INTO `smbms_role` VALUES (3, 'SMBMS_EMPLOYEE', '普通员工', 1, '2016-04-13 00:00:00', NULL, NULL); -- ---------------------------- -- Table structure for smbms_user -- ---------------------------- DROP TABLE IF EXISTS `smbms_user`; CREATE TABLE `smbms_user` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `userCode` varchar(15) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '用户编码', `userName` varchar(15) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '用户名称', `userPassword` varchar(15) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '用户密码', `gender` int NULL DEFAULT NULL COMMENT '性别(1:女、 2:男)', `birthday` date NULL DEFAULT NULL COMMENT '出生日期', `phone` varchar(15) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '手机', `address` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NULL DEFAULT NULL COMMENT '地址', `userRole` bigint NULL DEFAULT NULL COMMENT '用户角色(取自角色表-角色id)', `createdBy` bigint NULL DEFAULT NULL COMMENT '创建者(userId)', `creationDate` datetime NULL DEFAULT NULL COMMENT '创建时间', `modifyBy` bigint NULL DEFAULT NULL COMMENT '更新者(userId)', `modifyDate` datetime NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_unicode_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of smbms_user -- ---------------------------- INSERT INTO `smbms_user` VALUES (1, 'admin', '系统管理员', '1234567', 2, '1983-10-10', '13688889999', '北京市海淀区成府路207号', 2, 1, '2013-03-21 16:52:07', NULL, '2025-09-18 14:24:43'); INSERT INTO `smbms_user` VALUES (2, 'liming', '李明', '0000000', 2, '1983-12-10', '13688884457', '北京市东城区前门东大街9号', 2, 1, '2014-12-31 19:52:09', NULL, NULL); INSERT INTO `smbms_user` VALUES (5, 'hanlubiao', '韩路彪', '0000000', 2, '1984-06-05', '18567542321', '北京市朝阳区北辰中心12号', 2, 1, '2014-12-31 19:52:09', NULL, NULL); INSERT INTO `smbms_user` VALUES (6, 'zhanghua', '张华', '0000000', 1, '1983-06-15', '13544561111', '北京市海淀区学院路61号', 3, 1, '2013-02-11 10:51:17', NULL, NULL); INSERT INTO `smbms_user` VALUES (7, 'wangyang', '王洋', '0000000', 2, '1982-12-31', '13444561124', '北京市海淀区西二旗辉煌国际16层', 3, 1, '2014-06-11 19:09:07', NULL, NULL); INSERT INTO `smbms_user` VALUES (8, 'zhaoyan', '赵燕', '0000000', 1, '1986-03-07', '18098764545', '北京市海淀区回龙观小区10号楼', 3, 1, '2016-04-21 13:54:07', NULL, NULL); INSERT INTO `smbms_user` VALUES (10, 'sunlei', '孙磊', '0000000', 2, '1981-01-04', '13387676765', '北京市朝阳区管庄新月小区12楼', 3, 1, '2015-05-06 10:52:07', NULL, NULL); INSERT INTO `smbms_user` VALUES (11, 'sunxing', '孙兴', '0000000', 2, '1978-03-12', '13367890900', '北京市朝阳区建国门南大街10号', 3, 1, '2016-11-09 16:51:17', NULL, NULL); INSERT INTO `smbms_user` VALUES (12, 'zhangchen', '张晨', '0000000', 1, '1986-03-28', '18098765434', '朝阳区管庄路口北柏林爱乐三期13号楼', 3, 1, '2016-08-09 05:52:37', 1, '2016-04-14 14:15:36'); INSERT INTO `smbms_user` VALUES (13, 'dengchao', '邓超', '0000000', 2, '1981-11-04', '13689674534', '北京市海淀区北航家属院10号楼', 3, 1, '2016-07-11 08:02:47', NULL, NULL); INSERT INTO `smbms_user` VALUES (14, 'yangguo', '杨过', '0000000', 2, '1980-01-01', '13388886623', '北京市朝阳区北苑家园茉莉园20号楼', 3, 1, '2015-02-01 03:52:07', NULL, NULL); INSERT INTO `smbms_user` VALUES (15, 'zhaomin', '赵敏', '0000000', 1, '1987-12-04', '18099897657', '北京市昌平区天通苑3区12号楼', 2, 1, '2015-09-12 12:02:12', NULL, NULL); INSERT INTO `smbms_user` VALUES (17, '林品如', 'drgdrg', NULL, 2, '2025-09-09', '18754569847', 'hvtyuhguy', 2, NULL, '2025-09-17 18:07:00', NULL, '2025-09-17 18:07:25'); SET FOREIGN_KEY_CHECKS = 1;

修改主库3380数据库
修改my.ini文件
3380为主,3381为从
修改3380中my.ini文件信息
在D盘新建mysql8.0log文件夹

添加如下代码
# log-bin需要在D盘下创建文件夹mysql8.0log用于存储日志文件信息 log-bin=D:\mysql8.0log\mysql-bin # binlog-do-db 为要主从的数据库名 binlog-do-db=smbms
上面配置放的位置如下
[mysqld] # 设置3306端口 可以自己设置 port=3380 # 设置mysql的安装目录 basedir=D:\MySQLReadWriteSeparation\mysql-8.0.39-winx64-3380 # 设置mysql数据库的数据的存放目录 datadir=D:\MySQLReadWriteSeparation\mysql-8.0.39-winx64-3380\mysqldata # 开启慢日志 slow_query_log=1 long_query_time=2 # 允许最大连接数 max_connections=200 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=10 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION server-id=101 # 服务端使用的字符集默认为UTF8 character-set-server=utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 default_authentication_plugin=caching_sha2_password # log-bin需要在D盘下创建文件夹mysql8.0log用于存储日志文件信息 log-bin=D:\mysql8.0log\mysql-bin # binlog-do-db 为要主从的数据库名 binlog-do-db=smbms binlog_format = ROW [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3380 # 设置默认字符集为UTF8MB4 default-character-set=utf8mb4
重启服务
打开计算机管理重启服务

在mysql8.0log文件中会有如下的文件。

查看日志信息
打开navicat输入show master status;
注意这个信息 从库 要用,所以这个界面先别关闭。

修改从库3381数据库
修改my.ini文件
修改3381中的my.ini文件,并重启服务
添加如下代码
log-bin=D:\\mysql8.0log\mysql-bin # 如果你的电脑没有使用导向式安装过MySQL使用下面注释的这两条语句 # replicate-do-db=smbms # log-slave-updates # 如果你的电脑使用解压包的方式安装MySQL使用这个,我们上面就是解压包的方式安装的。 binlog-do-db=smbms #从库只读,防止误写 read_only=ON
上面配置的区别
replicate-do-db+ log-slave-updates:当您的从库(B)自身也作为其他从库(C)的主库时,需要使用此组合。这确保了从主库同步到B库的smbms数据库的更改,能被B库记录下来并继续传递给C库。这种架构称为级联复制。
binlog-do-db+ read_only:此组合用于标准的单向主从架构。在主库上通过binlog-do-db限定只同步smbms库,在从库上设置read_only防止误操作。需要注意的是,在主库上使用binlog-do-db进行过滤,所有操作和过滤的负载都集中在主库上。
上面配置放的位置如下
[mysqld] # 设置3306端口 可以自己设置 port=3381 # 设置mysql的安装目录 basedir=D:\\MySQLReadWriteSeparation\mysql-8.0.39-winx64-3381 # 设置mysql数据库的数据的存放目录 datadir=D:\\MySQLReadWriteSeparation\mysql-8.0.39-winx64-3381\mysqldata # 开启慢日志 slow_query_log=1 long_query_time=2 # 允许最大连接数 max_connections=200 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=10 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION server-id=101 # 服务端使用的字符集默认为UTF8 character-set-server=utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 default_authentication_plugin=caching_sha2_password # 从库配置 log-bin=D:\\mysql8.0log\mysql-bin replicate-do-db=smbms log-slave-updates [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3381 # 设置默认字符集为UTF8MB4 default-character-set=utf8mb4
重启服务

信息绑定
navicat打开3381数据库,并进行信息绑定

依次执行下面命令,注意要一条指令一条指令的跑。
stop slave; # 127.0.0.1为主数据库IP # master_port: 主数据库端口 # master_user: 主数据库用户 # master_password: 主数据库密码 # master_log_file: 主数据库 执行show master status;查看的 File 字段值 # master_log_pos: 主数据库 执行show master status;查看的 Position 字段值 change master to master_host='127.0.0.1', master_port=3380, master_user='root', master_password='root', master_log_file='mysql-bin.000001', master_log_pos=157; start slave; show slave status; # 查看是否连接 若使用dos命令 使用show slave status\G;
执行最后一条语句结果如下:只要出现Slave_IO_Running和Slave_SQL_Running

出现的问题
注意!! !!! !!! !!! !!! !!! !!!
你的mysql3381配置文件中的server-id这个值一定要和mysql8080的值不一样,你可以改为server-id=102。
如果server-id这个值相同那么你的读写分离时从库的Slave_IO_Running值为No
测试
修改主库的smbms数据库的随便一张表的数据。

对应的MySQL3381的smbms的数据库表也会修改

总结
到此这篇关于MySQL的读写分离配置的文章就介绍到这了,更多相关MySQL读写分离配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

