mysql-读写分离

在自己操作读写分离之前感觉应该不难,操作之中也确实不能,但是里面都是坑,一下我主要记录一下我做的时候遇到的那些坑。

1、准备好mysql安装包,请按照:https://www.jianshu.com/p/ea4accd7afb4 连接中的安装方式进行安装。安装完毕并修改完密码,顺便将data文件夹中的auto.cnf删除。

2、将安装好的赋值一份并修改名字。并按照下图将my.ini修改,同事删除清空data文件夹

mysql-读写分离

 

 

 3、如果两个服务都启动就算第一步结束了,可以配置读写分离,若两个服务起不来,那么按以下操作:

  删除安装的mysql程序(安装包不要删除)。其中包括注册表信息和服务

  删除注册表 :windows+R   输入regedit 

    删除:HKEY_LOCAL_MACHINE>SYSTEM>ControlSet001>Services>mysql
    删除:HKEY_LOCAL_MACHINE>SYSTEM>CurrentControlSet>Services>mysql

  删除服务:

    windows+R 输入 cmd

    命令窗口输入:sc delete 服务的名字

  截止位置算是清空了所有mysql程序。在次进行安装并复制一份。

 

复制中的坑:my.ini里面的内容:请复制

主库的配置:

[Client]
#设置3306端口
port = 3306
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=F:\mysql-5.7.25-winx64
# 设置mysql数据库的数据的存放目录
datadir=F:\mysql-5.7.25-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#开启日志
log-bin=mysql-bin
#设置服务id,主从不能一致
server-id=1
#设置需要同步的数据库
binlog-do-db=pawn
#屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema

  

  

从库的配置:

[Client]
#设置3306端口
port = 3308
[mysqld]
#设置3306端口
port = 3308
# 设置mysql的安装目录
basedir=F:\mysql-5.7.25-winx64-fk
# 设置mysql数据库的数据的存放目录
datadir=F:\mysql-5.7.25-winx64-fk\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#开启日志
log-bin=mysql-bin
#设置服务id,主从不能一致
server-id=2
#设置需要同步的数据库
replicate_wild_do_table=pawn.%
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%

  

此时,你的主库可以启动服务,但是从库缺少启动服务入口,使用下面的命令

命令窗口进入从库中bin文件夹下,执行命令:mysqld install 服务名字 --defaults-file="my.ini的绝对路径";

此时进入"管理"中会发现你的从库服务,先别急着启动,你还要清空data文件夹(你自己的数据库的所有信息,里面以前有数据的话先备份)中的内容。

如果此时主库和从库都已经可以访问,那么需要使用sql语句进行主从关联

主库中执行:

-- 主库授权

#授权主备复制专用账号
GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync';

#刷新权限
FLUSH PRIVILEGES;

#确认位点 记录下文件名以及位点
show master status;

 

从库中执行:

STOP SLAVE;
CHANGE MASTER TO master_host = 'localhost', master_user = 'db_sync', master_password = 'db_sync', master_log_file = 'mysql‐bin.000002', master_log_pos = 154;
START SLAVE;
show slave status;

完成后,如果执行完毕你需要关注

从库中一下状态是否与主库一直,并且slave_IO_running   slave_sql_running 是否是 Yes ,如果都没问题(主从库中my.ini中的同步数据确认好,主库和从库一定是提前创建好表),那么你就可以再主库中插入数据啦,刷新从库是否同步。

mysql-读写分离

 

上一篇:Codeforces Round #609 (Div. 2) A. Equation


下一篇:Managing the UNDO TABLESPACE