yutons的gravatar头像
yutons 2018-09-13 15:24:52
详解MySQL实现主从复制过程及mycat读写分离步骤

一、什么是主从复制

将主数据库中的DDL和DML操作通过二进制日志(BINLOG)传输到从数据库上,然后将这些日志重新执行(重做);从而使得从数据库的数据与主数据库保持一致。

二、主从复制的作用

1、主数据库出现问题,可以切换到从数据库。
2、可以进行数据库层面的读写分离,
3、可以在从数据库上进行日常备份

三、复制过程

详解MySQL实现主从复制过程及mycat读写分离步骤

Binary log:主数据库的二进制日志
Relay log:从服务器的中继日志
第一步:master在每个事务更新数据完成之前,将该操作记录串行地写入到binlog文件中。
第二步:salve开启一个I/O Thread,该线程在master打开一个普通连接,主要工作是binlog dump process。如果读取的进度已经跟上了master,就进入睡眠状态并等待master产生新的事件。I/O线程最终的目的是将这些事件写入到中继日志中。
第三步:SQL Thread会读取中继日志,并顺序执行该日志中的SQL事件,从而与主数据库中的数据保持一致。

 

四、windows版mysql压缩版安装以及单机多实例安装

首先按照常规方式按照一个mysql实例:

1.将下载后的mysql压缩包解压如下图:

详解MySQL实现主从复制过程及mycat读写分离步骤

2.在mysql-5.7.20根目录下创建my_3306.ini配置文件,配置内容如下:

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
**[m**ysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\devlops\MySQL\mysql-5.7.20
# 设置mysql数据库的数据的存放目录
datadir=D:\devlops\MySQL\mysql-5.7.20\data_3306
# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

#服务器 id
server-id=3306   

3.在mysql-5.7.20根目录下创建install_3306.bat自动安装执行脚本,配置内容如下:

cd /d %~dp0\bin
mysqld --defaults-file="D:\devlops\MySQL\mysql-5.7.20\my_3306.ini" --initialize-insecure --user=mysql --console
mysqld install mysql_3306 --defaults-file="D:\devlops\MySQL\mysql-5.7.20\my_3306.ini"
net start mysql_3306
pause

4.在mysql-5.7.20根目录下创建remove_3306.bat自动卸载执行脚本,配置内容如下:

cd /d %~dp0\bin
net stop mysql_3306
mysqld -remove mysql_3306
pause

5.执行安装操作:

5.1—配置mysql环境变量:

详解MySQL实现主从复制过程及mycat读写分离步骤

5.2—右键以管理员身份运行install_3306.bat,如需卸载请执行remove_3306.bat

详解MySQL实现主从复制过程及mycat读写分离步骤

5.3—如上图显示安装成功并启动成功,默认密码为空,需要手动修改密码:
登陆数据库,修改密码:

详解MySQL实现主从复制过程及mycat读写分离步骤

5.4—自此第一个mysql实例已经安装成功

5.5—安装第二个mysql实例:

1.复制install_3306.bat,,,my_3306.ini,,,remove_3306.bat三个文件在同一目录,并分别改名为install_3307.bat,,,my_3307.ini,,,remove_3307.bat,并将三个3307文件中的所有3306改为3307,修改完成后按照5.2 5.3执行安装操作

详解MySQL实现主从复制过程及mycat读写分离步骤

5.5—自此windows版mysql单机多实例安装成功

五、主从复制的具体操作

1.停止两个mysql实例

net stop mysql_3306
net stop mysql_3307

2.分别修改my_3306.ini和my_3307.ini配置文件:

Master my_3306.ini配置文件中添加

#二进制文件存放路径
log-bin=D:\devlops\MySQL\mysql-5.7.20\log_3306\mysql-bin
#待同步的数据库(根据需要修改)
binlog-do-db=callcenteradmin
#不需要备份的数据库 
binlog-ignore-db=mysql

slave my_3307.ini配置文件中添加

#开启二进制日志(从服务器不是必须要开启二进制日志)
log-bin=D:\devlops\MySQL\mysql-5.7.20\log_3307\mysql-bin
#执行同步操作的数据库(根据需要修改)需要和master数据库要同步的数据库名称保持一致
replicate-do-db=callcenteradmin

注意:在修改my_3306.ini和my_3307.ini配置文件后需在mysql-5.7.20根目录下创建log_3306和log_3307两个文件夹,否则启动会报错。。。。。。。。。。。。。。。

3.启动两个mysql实例

net start mysql_3306
net start mysql_3307

4.以管理员身份打开一个CMD窗口,登陆3306数据库(master数据库)

mysql -uroot -P3306 –proot                             登陆3306数据库
create database callcenteradmin; 创建要被同步的数据库
create user 'slave'@'127.0.0.1' identified by 'slave'; 在3306主库添加一个slave用户
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'127.0.0.1'; 为slave指定replication权限
show master status;                                       查看file和position对应参数.                                

详解MySQL实现主从复制过程及mycat读写分离步骤

5.以管理员身份打开一个CMD窗口,登陆3307数据库(slave数据库)

mysql -uroot -P3307 –proot 登陆3307数据库
create database callcenteradmin; 创建要同步目标数据库
stop slave; 停止从数据库复制功能
change master to master_host='127.0.0.1',
master_port=3309,
master_user='slave',
master_password='slave',
master_log_file='mysql-bin.000001',
master_log_pos=805; 配置主数据库参数
start slave; 启动从数据库复制功能  

详解MySQL实现主从复制过程及mycat读写分离步骤

注意:如果Slave_IO_Running** 和Slave_SQL_Running 的值都为 **Yes,则说明主从复制的所有配置已成功,即从服务器已经可以自动与主服务器的数据库数据实现同步了。

6.测试在主库创建表,插入数据;从库查看表,查看数据

主库创建表,插入数据
use callcenteradmin 使用callcenteradmin
create table tianyc_02(b int); 创建tianyc_02表
insert into tianyc_02 values(2013); 插入数据tianyc_02表

详解MySQL实现主从复制过程及mycat读写分离步骤

从表查询表,查询数据
use callcenteradmin 使用callcenteradmin
show tables;                   从表查询表
select * from tianyc_02; 从表查询数据            

详解MySQL实现主从复制过程及mycat读写分离步骤

7.自此,windows版mysql主从复制操作完成

六、使用MyCAT+MYSQL实现读写分离操作

mycat在应用当中的作用可以看下图


详解MySQL实现主从复制过程及mycat读写分离步骤

1.解压mycat,配置mycat环境变量

详解MySQL实现主从复制过程及mycat读写分离步骤


详解MySQL实现主从复制过程及mycat读写分离步骤


详解MySQL实现主从复制过程及mycat读写分离步骤

修改配置文件


详解MySQL实现主从复制过程及mycat读写分离步骤

配置server.xml

<user name="root">
 <property name="password">root</property>
 <property name="schemas">callcenteradmin</property><!-读写分离的数据库-à
 </user>
 <user name="user">
 <property name="password">root</property>
 <property name="schemas">callcenteradmin</property><!-读写分离的数据库-à
 <property name="readOnly">true</property>
 </user>        

配置schema.xml

 <schema name="callcenteradmin" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn_callcenteradmin"> </schema>
 <dataNode name="dn_callcenteradmin" dataHost="dh_43" database="callcenteradmin" />
 <dataHost name="dh_43" maxCon="1000" minCon="10" balance="1"
 writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
 <heartbeat>select user()</heartbeat>
 <writeHost host="43_M" url="127.0.0.1:3306" user="root" password="root">
 <readHost host="46_S2" url="127.0.0.1:3307" user="root" password="root" />
 </writeHost>
 </dataHost>    

启动mycat

 startup_nowrap.bat
TCP *:9066 (LISTEN) #虚拟schema管理端口 
TCP *:8066 (LISTEN) #虚拟schema登陆端口 

登陆操作和登陆mysql相同


打赏
最近浏览
31329885 2022年6月27日
暂无贡献等级
空空空  LV1 2021年7月28日
lt33333  LV7 2021年7月14日
q7459404 2021年5月14日
暂无贡献等级
大明朝的铜币  LV8 2021年4月22日
nanfeng155 2021年3月21日
暂无贡献等级
hahhah  LV1 2021年3月20日
yangyu44  LV2 2020年9月30日
8战魂5无双8  LV43 2020年9月21日
JackeyTang 2020年8月27日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友