动态站点中,数据库是影响站点性能的最关键因素之一。给数据库建立索引,是S(查询)的时候加速的最廉价办法,但是加了索引之后,在数据C(增加)、U(修改)、D(删除)的时候,重建索引又会加重数据库服务器的压力。如果能把数据库的crud分开来,在一台服务器上S(查询)数据,在另外的服务器上urd,那就好办了。还有,如果数据库做分布式部署的时候,让其他镜像数据库在三更半夜时自动同步主服务器的数据。亦或者,数据太重要了,实时自动备份数据到另一台服务器…
but,无奈,虽然是想挑战大数据,,,分布式部署,,,但是,俺决定学习配置主从数据库其实是源于:我想让装有nginx的web server blog.wfee.feehi.com自动同步另一台装有appache blog.feehi.com的数据。这样,在blog.feehi.com服务器宕屌的时候,能通过blog.wfee.feehi.com访问,并且不用同样的文章发布两篇。。。哎,真是淡淡的无奈,,,
查看两台服务器的mysql(mariadb)版本
主服务器配置:
啊哦,给clound用户授权失败鸟…这是因为mysql -u root -p默认使用的host是localhost,而root@localhost没有grant权限,用navicat看看用户的信息,果然:
果然,localhost是没有权限的,而127.0.0.1是有哒,于是换host登陆再设置:
成功啦..继续…
主服务器配置完成了,ok,把主服务器需要同步的数据库clound导出来,并导入到从服务器中去。此步略,mysqldump和source命令。。,亦或是navicat phpmyadmin辅助工具。。。
从服务器配置
查看从服务器的配置信息
主要查看Slave_IO_Running和Slave_SQL_Running的状态
两台服务器配置完毕…接下来测试测试,是否能自动同步的呢…->
创建数据库测试:
同步数据库成功。。。再来看看往test表中insert数据
数据同步过来了
数据库主从配置完成,试验成功…
其实,介个,真心不知道,商业用途,我什么时候才能用上的呢???还是配置一下blog.feehi.com数据库作为主数据库,让blog.wfee.feehi.com自动同步blog.feehi.com的数据库吧,,,让镜像站点独立出来,万一哪天数据库被黑,还有个完整备份,不那么心惊胆战捏,,,
微记录:今天,一开始从服务器同步是遇到一些问题的,老是同步不上,后来重启了主服务器,并重新运行change master…语句才正常的,找了些原因,可能是同步一旦出错就会工作不正常,这点,以后还需要深入研究,另外,准备定位问题的时候,想着在从服务器上登陆主服务器的mysql,却一直是错误,后来才明白,原来,连接数据库的时候,默认是使用本地的socket,远程的话指定protocol=tcp便可以解决:mysql -u root -h xxx.xxx.xxx.xxx –protocol=tcp -p口以搞定… PS:mysql主从同步,配置好后,在运行的过程中,经常,突然又不同步了。。。尤其是我设置同步blog数据库,因为文章内页链接依赖options表里面的siteurl,所以必须把blog.feehi.com改成blog.wfee.feehi.com,可是一旦手动修改从服务器上的数据,就会造成数据不一致,主从服务器停止同步,去找了资料,引起不同步的原因还有mysql版本差异、自增主键不一致,总之任何一处不一致,主从数据库就会停止同步。。。然后看到有两种方法解决:1.对于数据必须严格要求一致的,slave stop,然后重新change master…再start。2.对于数据不一致需要略过的(俺的options表里数据就是必须不一致)采用跳过错误的办法,slave stop -> set global sql_slave_skip_counter =1;(数字1可变,表示跳过几步错误) -> slave start
2015-08-28 note:最近在做的项目,使用到主从配置,不过这个从主要是用来热备。在做的过程中,发现mysql5.6版本使用start/stop slave。查看授权的时候 用show grants for ‘user’@’%';还要记得GRANT REPLICATION SLAVE ON *.* TO ‘user’@’%’ IDENTIFIED BY PASSWORD ’password‘
转载请注明:飞嗨 » mysql主从服务器配置