我们为什么要进行主从同步配置呢?
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力。
在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一。尤其是在大规模系统中,数据库集群已经成为必备的配置之一。集群的好处主要有:查询负载、数据库复制备份等。其中Master负责写操作的负载,也就是说一切写的操作都在Master上进行,而读的操作则分摊到Slave上进行。这样一来的可以大大提高读取的效率。写操作涉及到锁的问题,不管是行锁还是表锁还是块锁,都是比较降低系统执行效率的事情。我们这样的分离是把写操作集中在一个节点上,而读操作其其他的N个节点上进行,从另一个方面有效的提高了读的效率,保证了系统的高可用性。
假设我们现在在Windows下配置MySQL数据库主从,具体内容如下:
所用到工具:
Mysql、NavicatPremium;
主库设置:
一.设置my.ini文件;
1.在安装目录下找到my.ini文件:
默认路径:C:\\ProgramFiles\\MySQL\\MySQLServer5.0
2.在my.ini文件中找到[mysqld](#注释自行删除)
添加如下配置:
server-id=1#这是数据库ID此ID是唯一的,ID值不能重复,否则会同步出错;
log-bin=mysql-bin#二进制日志文件,此项为必填项,否则不能同步大数据学习路线图数据;如果不取名字的话,那么就会以计算机的名字加编号来命名二进制文件;
binlog-do-db=mstest#同步的数据库
binlog-do-db=test#同步的数据库
binlog-do-db=keyboard#同步的数据库
binlog-ignore-db=mysql#不需要同步的数据库
如图:
重启MySql服务(停止、启动)
注意点:在Linux下,只需要修改/etc/my.cnf即可,但是在windows下,小编改了安装目录下的my.ini,发现配置并不生效,后来小编看到了服务中的mysql服务的属性,发现了这么一句话:"C:\\ProgramFiles\\MySQL\\MySQLServer5.6\\bin\\mysqld.exe"--defaults-file="C:\\ProgramData\\MySQL\\MySQLServer5.6\\my.ini"MySQL56,原来mysql服务读取的配置文件在这里,后来修改了这个路径下的my.ini,重启服务,配置就生效了。
3.确认主库的serverid和需要同步的数据库及不用同步的数库
打开NavicatPremium连接主库
(1)按F6或在[工具]中找[命令列表界面]
输入:SHOWVARIABLESLIKE'server_id';
确认serverId
输入:showmasterstatus;
确认:需要同步的数据库及不用同步的数库下图中file和position在从库配置中会用到(每次修改主服my.ini文件file和position参数都会变)
如图:
4.为从库创建账号:
1).如图:
其中%代表任何主机都能连接该数据库
2).添加账号权限:服务器权限全部选上
主库配置OK
二.从库配置
1).用主库创建的账号密码连接一下看是否能正常连接
2).同样找到my.ini文件进行配置文件
找到[mysqld]节点
server-id=2#和主库不一致
master-host=192.168.0.103#主库IP(和从库是局域网)
master-user=slave
master-password=123
master-port=3306
master-connect-retry=60
replicate-do-db=test#需要同步的表
replicate-do-db=keyboard#需要同步的表
replicate-ignore-db=mysql#不需要同步的表
如图:
3).重启MySql服务打开任务管理器找到mysql停止一下然后启动bingo
注意:在这里可能会无法链接到主数据库,需要看主数据库中my.ini中bind127.0.0.1是否没有被注释,如果没有,那么只能在本机登录,而不能使用远程登录方式。
4).设置运行代码从库配置
(1)输入:stopslave;
说明暂停从库
(2)输入:
changemastertomaster_host='192.168.0.103',master_port=3306,master_user='slave',master_password='123',master_log_file='mysql-bin.000005',master_log_pos=98;
说明:对应着改成你们自己的配置
关于File和Position('mysql-bin.000005'98)是主库配置中的第3步得到的主库中输入命令showmasterstatus;
(3)输入:startslave;
说明启动;
如图:
5).检验是否可以打通了
输入:showslavestatus;
当然他们说这样也可以(但我不行)showslavestatus\\G(没有分号),查看
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
输入指令之后
会出现较长文字不好看于是小编将其复制到text上如下图:
三.验证(可不看自行验证):
主库:
从库:
(2)小编在ogg主库添加几张表:
主库:
从库:
下一篇:oracle数据类型详解
¥29.90
¥48.00¥180.00
¥798.00
¥48.00¥180.00
¥199.00
¥199.00