- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MYSQL分布式中间件课题研究
MYSQL分布式中间件
MySQL的主从复制是通过binlog日志来实现的,主从复制中的“主”指的是MySQL主服务器上的数据库,“从”指的是MySQL从服务器上的数据库,且这种复制是基于数据库级别的,为此从服务器中的数据库名称必须和主服务器中的数据库名称保持一致,那么,要想实现主从复制,我们至少要有两个MySQL服务器(最好是两个MySQL服务器分别位于不同的主机上,或者在一个主机上安装两个MySQL,端口不同即可)
数据库服务器的参数:
主服务器(master): IP为,端口为3306
从服务器(slave): IP为,端口为3307
从服务器(slave): IP为,端口为3308
主服务器配置:
修改主服务器的数据库配置文件(\mysql\bin\my.ini),在 [mysqld] 标签的最下面,添加如下代码:
#需要备份的数据库
binlog-do-db =
#不需要备份的数据库
binlog-ignore-db=mysql
#开启二进制日志
log-bin=mysql-bin
#服务器id
server-id=1
保存退出,重启MySQL主服务器。
binlog-do-db用于指定需要同步的数据库,binlog-ignore-db指定不需要同步的数据库,如果这两个参数都不设置,则从服务器会复制主服务器的所有数据库。
一般不用root账号作同步账号,为此,我们需要在主服务器上创建一个新的用户(如 user01,密码为123456)
这里我们用命令行的方式创建,方法如下:
打开cmd,切换至 \mysql\bin,用 root 账户连接MySQL主服务器:
mysql -uroot -p -P33306
创建新用户:
create user user01@ identified by 123456;
(@后面的ip地址为允许连接的客户端的ip地址。)
然后,给新用户配置主从复制的权限:
grant replication slave on *.* to user01@ identified by 123456;
(@后面的ip地址为允许连接的客户端的ip地址,如果改为 %,就表示客户端没有ip地址的限制)
如果主服务器的数据库()中,已经有数据,我们需要先手动把主服务器中的数据复制到从服务器。方法如下:
在本案例中,我们只备份一个数据库(),中有一个表user,表中也已经有了数据。为了防止我们复制数据的时候,数据库中的数据发生更新,我们需要先锁定数据库,命令如下:
flush tables with read lock;
这个命令是全局读锁定,它会给主服务器中的所有数据库都加上读锁,这里顺便说一下读锁和写锁的区别:
read lock(读锁):也叫共享锁,允许所有的读操作,但阻塞写操作,即所有连接只可以读数据,但不允许写数据。
write lock(写锁):也叫排它锁、独占锁,只允许当前连接的读和写,不允许其他并发的读操作和写操作。
锁定主服务器的数据库后,我们在从服务器中,也创建一个数据库test,并将所有的表(包括表结构和表数据)都导入。
然后,我们执行下面的命令,解锁:
unlock tables;
查看主服务器的 master 状态:
mysql show master status;
从服务器配置:
修改从服务器的数据库配置文件(\mysql\my.ini),在 [mysqld] 标签的最下面,添加如下代码:
#端口
port = 3307
#服务器id
server_id = 2
#开启二进制日志(从服务器不是必须要开启二进制日志)
log-bin=mysql-bin
保存退出,重启MySQL服务。
连接MySQL从服务器:
mysql -uroot -p -P33307
配置复制的参数:change master to master_host=,master_user=user01,master_password=123456,master_port=3306,master_log_file=mysql-bin.000008,master_log_pos=498;
参数详解:
master_host: 主服务器的IPmaster_user: 主服务器上新创建的用户名master_password: 用户的密码master_port: 主服务器的端口,如果未曾修改,默认即可。
master_log_file: 主服务器二进制日志文件的名称,填写查看主服务器的master状态时显示的File的值
master_log_pos: 日志的位置,填写查看主服务器的master状态时显示的Position的值
启动从服务器的slave复制功能:
start slave;
查看从服务器的slave状态
文档评论(0)