ShardingSphere 5.0.0-alpha 分库分表解决方案(四)——主从复制MySQL环境搭建

timo-nbktp 1年前 ⋅ 1135 阅读

1. 安装说明

  • Windows里面搭建MySQL主从复制,纯粹是为了开发测试方便
  • 把环境变量里的MySQL配置删除,包括path里面
  • 如果在安装从数据库之前,电脑里已经安装过一个MySQL了,不要复制之前使用过的安装包,而是要重新解压,此处遇到一个坑,两个服务器的server_id一直一样
  • 所有cmd命令行要以管理员身份运行

2. 主数据库配置

解压完之后的mysql-8.0.23-winx64里面是没有my.ini文件的,需要自己手动创建,主数据库的my.ini文件,其中要注意下:default_authentication_plugin=mysql_native_password

[mysqld]
#主库和从库需要不一致
server-id=1
log-bin=mysql-bin
#同步的数据库
binlog-do-db=ss_dict_db
#不需要同步的数据库
binlog-ignore-db=mysql
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:\mysql\mysql-8.0.23-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql\mysql-8.0.23-winx64\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

对于主数据库,因为电脑里之前装过MySQL数据库,所以没有需要做太多的工作。主要就是创建一个slave用户,并赋予对应的权限,这里需要注意的是,MySQL5.X版本和MySQL8.X版本的命令是不一样的。

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON . TO 'slave'@'MySQL2' identified by '123456' ;
FLUSH PRIVILEGES;

需要查看master节点的状态:show master status

3. 从数据库配置

如果主数据库没有安装过,那么和从数据库的安装步骤一样。

从数据库的my.ini文件,只有下面四项不一样,其余和主数据库的配置完全一样。

server-id=48
# 设置3307端口
port=3307
# 设置mysql的安装目录
basedir=D:\mysql\mysql-8.0.23-winx64-3307
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql\mysql-8.0.23-winx64-3307\data

cmd命令行要以管理员身份运行,从数据库要重新解压mysql-8.0.23-winx64.zip包,然后重新命名。

由于没有配置MySQL环境变量,所以执行命令时要进入到对应的文件夹下面,执行初始化命名:

mysqld --initialize --user=mysql --console

获取得到初始化密码,可以复制出来,再执行install操作

mysqld --install MySQL2 --defaults-file="D:\mysql\mysql-8.0.23-winx64-3307\my.ini"

执行完注册操作之后,到服务里面去查看是否已经有MySQL2服务的存在

如果MySQL2服务已经启动,进入命令行登录:mysql -uroot -p,密码为上面初始化后得到的密码,可以复制,然后进行修改密码操作。

在从数据库上注册同步的主数据库信息

CHANGE MASTER TO
master_host = 'localhost',
master_user = 'slave',
master_password = '123456',
master_log_file = 'mysql-bin.000003',
master_log_pos = 156;

停止并重新启动slave,最后查看状态,show slave status

只有Slave_IO_RunningSlave_SQL_Running两项均为Yes,才算配置成功。

4. 验证

在主数据库中的ss_dict_db中插入数据,发现从数据库的表会得到同步。

5. 安装过程中遇到的问题

下面的问题,需要在配置文件中添加:default_authentication_plugin=mysql_native_password

还遇到server_id怎么配置都一样的问题,解决办法是从数据库不要复制安装好的mysql数据库,重新解压一个新的文件。

还有遇到mysql5.xmysql8.x版本命令不一样的问题。

 

--end--

 

 

版权 本着开源共享、共同学习的精神,本文转载自 https://blog.csdn.net/zxd1435513775/article/details/122366667 , 如果侵权之处,请联系博主进行删除,谢谢~