mt5 mysql数据库_MySQL数据库配置主从复制
数据库主从复制先本机模拟实现数据库主从复制。(本次使用MySql数据库,数据库版本5.7.25)实现步骤:1、安装第二个MySql数据库2、配置数据库3、在SpringBoot里实现数据库主从复制1、由于没有其他服务器,先使用本地安装两个数据库进行模拟数据库主从复制。(1)先停止本地MySql服务。(2)将本机的MySql文件夹拷贝一份,重命名为mysql2。(3)然后进入Mysq
数据库主从复制
先本机模拟实现数据库主从复制。(本次使用MySql数据库,数据库版本5.7.25)
实现步骤:
1、安装第二个MySql数据库
2、配置数据库
3、在SpringBoot里实现数据库主从复制
1、由于没有其他服务器,先使用本地安装两个数据库进行模拟数据库主从复制。
(1)先停止本地MySql服务。

(2)将本机的MySql文件夹拷贝一份,重命名为mysql2。

(3)然后进入Mysql2文件夹,删除掉data目录,然后打开my.ini修改端口号,里面的Basedir,datadir也要修改。

修改的内容如下:

配置内容需要的可以复制:
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake
#以上是修改MySQL为utf-8的操作#
数据库的解压位置,修改为自己的(最好不要放到有空格的路径中)
basedir=G:\\tools\\mysql2
数据库的数据文件存放目录,修改为自己的(最好不要放到有空格的路径中)
datadir=G:\\tools\\mysql2\\data
max_connections = 2000
port=3307
server-id = 2
log-bin=mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
(4)开始执行安装和添加服务
4.1 以管理员身份运行命令行窗口

4.2命令行进入mysql2里的bin目录

4.3 安装mysql服务,指定该mysql服务名为mysql2,并指向my.ini文件进行安装
mysql2\bin>mysqld install mysql2 --default-file="G:\tools\mysql2\my.ini"
成功安装后会提示:
Service successfully installed.
然后就可以在任务管理器服务中看到mysql2

4.4 数据库安装成功后,还需要进行初始化,才能使用
在bin目录下执行如下命令
G:\tools\mysql2\bin>mysqld
执行成功后,mysql2文件夹就会自动生成data目录

4.5 打开注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql2目录,修改ImagePath的值为G:\tools\mysql2\bin\mysqld mysql2
先打开注册表

然后找到计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql2目录,修改ImagePath值。

5、启动数据库,修改数据库密码
使用net start mysql2 命令启动mysql2服务
G:\mysql2\bin>net start mysql2
mysql2 服务正在启动 .
mysql2 服务已经启动成功。
(若mysql2 启动失败,请检查自己是否已经停止了之前的mysql服务,见第一步)
mysql2服务启动之后,可以进入data目录,查看XX.err文件中找到临时密码

然后使用临时密码登录
C:\Users\loimh>mysql -P 3307 -u root -p
Enter password: ***** (输入临时密码)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 84
Server version: 5.7.25-log MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
修改密码
mysql> set password for root@localhost=password('mysql');
Query OK, 0 rows affected, 1 warning (0.00 sec)
然后quit退出,用新密码登录。
2、配置两个数据库实现主从复制。
2.1 新建一个测试数据库(主从数据库都要新建)
CREATE DATABASE `task_db`;
USE `task_db`;
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
insert into `tb_user`(`id`,`name`) values (1,'刘一'),(2,'陈二'),(3,'张三'),(4,'李四'),(5,'王五');
2.2 修改主库master
2.2.1 修改my.ini文件,大家可以直接复制我的
server-id = 1 # 节点ID,确保唯一
# log config
log-bin = mysql-bin #开启mysql的binlog日志功能
sync_binlog = 1 #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全
binlog_format = mixed #binlog日志格式,mysql默认采用statement,建议使用mixed
expire_logs_days = 7 #binlog过期清理时间
max_binlog_size = 100m #binlog每个日志文件大小
binlog_cache_size = 4m #binlog缓存大小
max_binlog_cache_size= 512m #最大binlog缓存大
binlog-ignore-db=mysql #不生成日志文件的数据库,多个忽略数据库可以用逗号拼接,或者 复制这句话,写多行
auto-increment-offset = 1 # 自增值的偏移量
auto-increment-increment = 1 # 自增值的自增量
slave-skip-errors = all #跳过从库错误
然后重启master数据库服务。
2.2.2 接下来创建一个用于同步的账号,也可以不进行这一步,直接使用root用户。
#创建用户:allowsalve,密码为:123456,并授权。
GRANT REPLICATION SLAVE ON *.* TO 'allowsalve'@' 172.18.237.231' IDENTIFIED BY '123456';
#刷新用户权限
flush privileges;
2.2.3查看主节点(master)的状态
show master status;

2.3 配置从数据库(slave)
2.3.1 先修改从数据库的配置文件my.ini,大家可以直接复制我的
server-id = 2
log-bin=mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
修改完配置记得重启服务才能生效。
2.3.2 从数据库执行执行链接主服务器命令
MASTER_LOG_FILE和MASTER_LOG_POS的值是通过刚才查询主库状态得到的:

CHANGE MASTER TO
MASTER_HOST = '172.17.0.3',
MASTER_USER = 'root', #master数据库用户
MASTER_PASSWORD = '******', #master数据库用户密码
MASTER_PORT = 3306,
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=120,
MASTER_RETRY_COUNT = 6992,
MASTER_HEARTBEAT_PERIOD = 10000;
# MASTER_LOG_FILE='mysql-bin.000005',#与主库File 保持一致
# MASTER_LOG_POS=120 , #与主库Position 保持一致
2.3.3 启动从库slave进程
mysql> slave start; #启动从库slave进程
Query OK, 0 rows affected (0.04 sec)
2.3.4 查看状态(当Slave_IO_Running、Slave_SQL_Running)同为yes即为启动成功。
#查看从节点(slave)状态
show slave status\G;

2.4 效果展示
2.4.1 查看主节点以及从节点状态
#主节点(master)
show master status;
#从节点(slave)
show slave status\G;

2.4.2 查询主节点(master)与从节点(slave)中同步的数据库信息、确认数据一致。
#选中数据库
use task_db;
#查看当前数据库中所有的表
show tables;
#查询tb_user表数据信息
select * from tb_user;

2.4.3主节点(master)新增表数据、确认从节点(slave)是否准实时同步
#主节点(master)添加两台新数据
insert into tb_user(name) values('赵六'),('孙七');
#从节点(slave)查看新的表数据
select * from tb_user;
同步成功

2.4.4 主节点(master)新建表、查看从节点(slave)数据库表的状态
#主库(master)创建新表tb_dept
CREATE TABLE tb_dept(
id INT(4) PRIMARY KEY,
NAME VARCHAR(20)
);
#查看从库(slave)中所有表
show tables;
同步成功

至此,主从数据库配置完成。
SpringBoot实现读写分离
我们接下来在Springboot中使用数据库主从复制实现读写分离,操作数据时操作主表,查询操作使用从表。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)