读写分离.docx
- 文档编号:9422956
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:17
- 大小:20.40KB
读写分离.docx
《读写分离.docx》由会员分享,可在线阅读,更多相关《读写分离.docx(17页珍藏版)》请在冰豆网上搜索。
读写分离
一、配置主从
条件:
两台PC,IP分别为192.168.168.253,192.168.168.251。
两台PC上的Mysql版本为5.0。
253上的Mysql为Master,251上的Mysql为Slave。
1、主数据库服务器配置
进入主数据库服务器安装目录,打开my.ini,在文件末尾增加如下配置:
[java]viewplaincopyprint?
1.#数据库ID号,为1时表示为Master,其中master_id必须为1到232–1之间的一个正整数值;
2.server-id=1
3.#启用二进制日志;
4.log-bin=mysql-bin
5.#需要同步的二进制数据库名;
6.binlog-do-db=minishop
7.#不同步的二进制数据库名,如果不设置可以将其注释掉;
8.binlog-ignore-db=information_schema
9.binlog-ignore-db=mysql
10.binlog-ignore-db=personalsite
11.binlog-ignore-db=test
12.#设定生成的log文件名;
13.log-bin="D:
/Database/materlog"
14.#把更新的记录写到二进制文件中;
15.log-slave-updates
#数据库ID号,为1时表示为Master,其中master_id必须为1到232–1之间的一个正整数值;
server-id=1
#启用二进制日志;
log-bin=mysql-bin
#需要同步的二进制数据库名;
binlog-do-db=minishop
#不同步的二进制数据库名,如果不设置可以将其注释掉;
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=personalsite
binlog-ignore-db=test
#设定生成的log文件名;
log-bin="D:
/Database/materlog"
#把更新的记录写到二进制文件中;
log-slave-updates
保存文件。
重启Mysql服务。
进入从数据库服务器安装目录,打开my.ini,在文件末尾增加如下配置:
[java]viewplaincopyprint?
1.#如果需要增加Slave库则,此id往后顺延;
2.server-id=2
3.log-bin=mysql-bin
4.#主库host
5.master-host=192.168.168.253
6.#在主数据库服务器中建立的用于该从服务器备份使用的用户
7.master-user=forslave
8.master-password=******
9.master-port=3306
10.#如果发现主服务器断线,重新连接的时间差;
11.master-connect-retry=60
12.#不需要备份的数据库;
13.replicate-ignore-db=mysql
14.#需要备份的数据库
15.replicate-do-db=minishop
16.log-slave-update
#如果需要增加Slave库则,此id往后顺延;
server-id=2
log-bin=mysql-bin
#主库host
master-host=192.168.168.253
#在主数据库服务器中建立的用于该从服务器备份使用的用户
master-user=forslave
master-password=******
master-port=3306
#如果发现主服务器断线,重新连接的时间差;
master-connect-retry=60
#不需要备份的数据库;
replicate-ignore-db=mysql
#需要备份的数据库
replicate-do-db=minishop
log-slave-update
保存文件。
重启Mysql服务。
进入主数据库服务器,创建上面备份使用的用户名和密码,同时授权replicationslave,super和reload
[java]viewplaincopyprint?
1.mysql>grantreplicationslave,super,reloadonminishop.*toforslave@192.168.168.251identifiedby'******';
2.CREATETABLEIFNOTEXISTSperson(
3.numberINT(11),
4.nameVARCHAR(255),
5.birthdayDATE
6.);mysql>grantreplicationslave,super,reloadonminishop.*toforslave@192.168.168.251identifiedby'******';
进入从数据库服务器,启动Slave。
[java]viewplaincopyprint?
1.mysql>slavestart;
2.
3.mysql>showslavestatus\G;
changemasterto
master_host='192.168.5.80',
master_user='forslave',
master_password='123456',
master_port=3306,
master_log_file='mysql-bin.000003',
master_log_pos=120;
startslave;
文章转载自网管之家:
start;
mysql>showslavestatus\G;
测试:
进入主数据库服务器,在Minishop中某张表中插入一条数据,然后到从数据库服务器中查看是否含有刚刚插入的数据。
完毕!
备注:
1)运行配置后的主数据库服务器先于从数据库服务器,这样运行从数据库服务器时,主库的File和Position与从库的上设置Master_Log_File、Read_Master_Log_Pos就会一致。
否则,可能出现不一致的情况。
这也可以通过命令调整。
2)如果发现主从复制失败时,可以先关闭从数据库服务器,然后删除从数据库服务器中data目录下relay-log.info,hosname-relay-bin*,master.info等文件,重启从服务器。
二、读写分离配置
本想采用MysqlProxy来实现读写分离,奈何其使用的lua脚本着实让人头痛,最后决定采用国人开发的开源数据库代理中间件Amoeba。
使用Amoeba,只需要简单的xml配置,就可以很容易地实现读写分离。
Amoeba处于应用程序和数据库服务器之间,充当一个中间代理层。
其支持负载均衡、高可用性、Query过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。
功能很强大。
Amoeba默认的端口为8066,实现了Mysql协议。
应用程序中只需要修改一个数据库连接就可以实现采用Amoeba来代理数据库访问。
比如:
java应用中,假如你原来的jdbc连接字符串为:
jdbc:
mysql:
//192.168.168.42:
3306/minishop,那么现在,你想使用Amoeba作为数据库访问代理,则只需要将上面连接字符串改为如下(假如Amoeba所在机子IP为192.168.168.88):
jdbc:
mysql:
//192.168.168.88:
8066/minishop。
Amoeba透明性做的很赞。
主要还是配置Amoeda,但是配置也是相当的简单。
基本只需要配置两个文件:
conf\dbServers.xml和conf\amoeba.xml。
配置中各项的含义,可以参考amoeda中文指南,这里不做过多解释。
仅记录下配置。
dbServers.xml主要配置
[html]viewplaincopyprint?
1. dbServersxmlns: amoeba=" 2. 3. -- 4.EachdbServerneedstobeconfiguredintoaPool, 5.IfyouneedtoconfiguremultipledbServerwithloadbalancingthatcanbesimplifiedbythefollowingconfiguration: 6.addattributewithnamevirtual="true"indbServer,buttheconfigurationdoesnotallowtheelementwithnamefactoryConfig 7.suchas'multiPool'dbServer 8.--> 9. 10. 11. 12. 13. 14. 15. 16. --mysqlport--> 17. 18. 19. --mysqlschema--> 20. 21. 22. --mysqluser--> 23. 24. 25. --mysqlpassword--> 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. --mysqlip--> 44. 45. 46. 47. 48. 49. 50. --mysqlip--> 51. 52. 53. 54. 55. 56. 57. --mysqlip--> 58. 59. 60. 61. 62. 63. 64. 65. --Loadbalancingstrategy: 1=ROUNDROBIN,2=WEIGHTBASED,3=HA--> 66. 67. 68. --Separatedbycommas,suchas: server1,server2,server1--> 69. 70. 71. 72. 73.
dbServers>
dbServersxmlns: amoeba=" -- EachdbServerneedstobeconfiguredintoaPool, IfyouneedtoconfiguremultipledbServerwithloadbalancingthatcanbesimplifiedbythefollowingconfiguration: addattributewithnamevirtual="true"indbServer,buttheconfigurationdoesnotallowtheelementwithnamefactoryConfig suchas'multiPool'dbServer --> --mysqlport--> --mysqlschema--> --mysqluser--> --mysqlpassword--> --mysqlip--> --mysqlip--> --mysqlip--> --Loadbalancingstrategy: 1=ROUNDROBIN,2=WEIGHTBASED,3=HA--> --Separatedbycommas,suchas: server1,server2,server1-->
dbServers>
amoeba.xml配置:
[html]viewplaincopyprint?
1. configurationxmlns: amoeba=" 2. 3. 4. 5. --serviceclassmustimplementscom.meidusa.amoeba.service.Service--> 6. 7. --port--> 8. 9. 10. --bindipAddress--> 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 读写 分离