msyql主从复制

108 阅读2分钟

转载:blog.csdn.net/weixin_4517…

MySQL主从复制

记一次主从复制配置,以防自己忘掉,方便以后查找。写的有不对的地方还望大家指正,谢谢!

1.主库配置

1.修改数据库配置文件my.cnf文件
文件默认在/etc/mysql/my.cnf

[mysqld]
# 主从复制
log-bin=mysql-bin #开启二进制日志
server-id=1 #设置server-id 必须唯一

添加配置后需要重启MySQL
2.添加用户并查看binlog信息

-- 创建用于主从复制的用户,slave = 用户名  % = 代表所有IP都可以连接(可换成具体ip)  123456 = 密码
CREATE USER 'slave'@'%' IDENTIFIED with mysql_native_password by '123456';
-- 为该用户赋予权限
GRANT replication slave on *.* to 'slave'@'%';
-- 刷新配置
FLUSH PRIVILEGES;
-- 查看创建的用户是否存在
use mysql;
select user, host from user;
-- 查看当前binlog节点及position值
show master status;

获取当前主数据库中binlog节点

image.png

2.从库配置

1.修改数据库配置文件my.cnf文件

[mysqld]
# 主从复制
server-id=2 #设置server-id,必须唯一

重启MySQL数据库

2.添加主数据库信息


-- 添加主数据库信息及读取binlog的节点信息
CHANGE MASTER TO MASTER_HOST = '192.168.158.128',
MASTER_USER = 'slave',
MASTER_PASSWORD = '123456',
MASTER_LOG_FILE = 'mysql-bin.000001',
MASTER_LOG_POS = 820
-- 启动从库
START SLAVE;
-- 查看主从状态
SHOW SLAVE STATUS;

查看主从同步状态,如果Slave_IO_Running = yes并且Slave_SQL_Running = yes则代表主从同步已经正常启动,若存在No,则需要根据Last_IO_Error 、Last_SQL_Error、Last_Error这三个字段对应的报错信息进行分析及修改。

image.png

3.验证

在主库创建数据表(这里用file_attachment表)

-- 切换database
USE mysql;
-- 创建数据库表
CREATE TABLE `file_attachment` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `created` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  `deleted` datetime(3) DEFAULT NULL,
  `updated` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
  `version` int NOT NULL DEFAULT '0',
  `file_path` varchar(63) COLLATE utf8_unicode_ci DEFAULT NULL,
  `operator` varchar(63) COLLATE utf8_unicode_ci DEFAULT NULL,
  `comment` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `file_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

查看从库中是否有该数据库
:新建表需要添加字符集,不然向表中添加数据时会报字符集不正确,致使主从同步暂停。

4.在springboot中使用主从复制

image.png

导入maven依赖

<!--mysql主从复制的maven依赖-->
<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
    <version>4.0.0-RC1</version>
</dependency>

在application.yml文件spring配置下加入下面这个东西

 main:
      allow-bean-definition-overriding: true

完成!