服务化-mysql-06 单机实现mysql8.0主从数据库同步

06 单机实现主从数据库

一、历史版本删除

1.1 停止服务
1)在任务管理栏找到mysql结束任务。
2)管理员权限打开cmd命令行,net stop mysql(前提是知道你安装服务时,服务的名称是mysql)
1.2 卸载程序
1.3 删除服务
管理员启动命令行,查询mysql服务还是否存在,如果存在直接删除(下图是因为没有用管理员权限删除导致的)
《服务化-mysql-06 单机实现mysql8.0主从数据库同步》
1.4 删除环境变量,否则有可能会使用环境变量中配的全局mysql
1.5 重新初始化mysql,需要删除data文件夹的数据

二、安装主从数据库

《服务化-mysql-06 单机实现mysql8.0主从数据库同步》

2.1 配置my.ini(单机多mysql实例需要区别端口号)

主数据库,端口号默认设置3306

[mysqld]
port=3306
basedir=D:\\mysql\mysql_8.0_master
datadir=D:\\mysql\mysql_8.0_master\data
character-set-server=utf8mb4
default-storage-engine=INNODB
# 主库设置 server_id需要区别开
server_id=1
log_bin=master-bin
log_bin-index=master-bin.index
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4

从数据库,服务端端口号和客户端端口号都设置为3308(两个端口号不统一,会造成连接失败)

[mysqld]
port=3308
basedir=D:\\mysql\mysql_8.0_slave
datadir=D:\\mysql\mysql_8.0_slave\data
character-set-server=utf8mb4
default-storage-engine=INNODB
# 主库设置 server_id需要区别开
server_id=1
log_bin=slave-bin
log_bin-index=slave-bin.index
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3308
default-character-set=utf8mb4

2.2 初始化data文件夹

新建data文件夹即可

2.3 主从数据库安装

2.3.1 主数据库安装
管理员权限,cd到主数据库的bin目录。

#console可视初始化安装
mysqld --initialize --console
#安装并定义服务名mysql_master
mysqld --install mysql_master
#启动mysql_master服务
net start mysql_master
#使用mysql自带的客户端,连接服务端连接器(pwd在前面console中已给出随机值)
mysql -uroot -p
#将root账号密码修改为root
alter user 'root'@'localhost' identified with mysql_native_password by 'root'

《服务化-mysql-06 单机实现mysql8.0主从数据库同步》
2.3.2 从数据库安装
命令行与上方基本一样,注意取名注册的服务名称带区别即可
《服务化-mysql-06 单机实现mysql8.0主从数据库同步》
这样主从数据库就都安装成功了,并且都已经启动了。
中途如果有安装失败,需要停止服务、删除注册服务即可。

#终止服务
net stop mysql
#删除注册服务信息
sc delete mysql

三、配置主从服务

因为slave数据库需要到连接到master数据库,并由master的bin log推动日志到slave。需要在主数据库中为slave配置USER账号信息。
《服务化-mysql-06 单机实现mysql8.0主从数据库同步》

3.1 创建主数据库的从属账号

CREATE USER 'follow'@'%' IDENTIFIED WITH mysql_native_password BY 'master_follow';

允许slave数据库在任何机器ip上使用follow账号连接主数据库。
《服务化-mysql-06 单机实现mysql8.0主从数据库同步》

3.2 指定新建的follow为主从同步账号

#指定从属关系
grant replication slave on *.* to 'follow'@'%';
#将mysql USER和privilege表中的用户信息和权限信息更新到内存中。
flush privileges;

3.3 查看master binlog的起始位置(用于记录后续从属数据库开始同步的日志位置)

 show master status;

《服务化-mysql-06 单机实现mysql8.0主从数据库同步》

3.4 从库配置主库信息

#从库设置主库信息
mysql>change master to master_host='127.0.0.1',
master_port=3306,
master_user='follow',
master_password='follow',
master_log_file='master-bin.000002',
master_log_pos=1130;
#开启从库热备
start slave;

《服务化-mysql-06 单机实现mysql8.0主从数据库同步》
查看备份数据同步存在异常,slave_IO_Running:No,原因是主从数据库使用的server_id都是1,这样没法slave。
《服务化-mysql-06 单机实现mysql8.0主从数据库同步》只有手动设置一下server_id,在my.ini文件里也同步改一下就可以了。
《服务化-mysql-06 单机实现mysql8.0主从数据库同步》

    原文作者:旧梦昂志
    原文地址: https://blog.csdn.net/csfun1/article/details/120029187
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞