18.1、mysql读写分离实现的方法:
1、通过程序实现读写分离:
php和java程序实现读写分离(性能,效率最佳,推荐);
php和java程序都可以通过设置多个连接文件轻松实现对数据库的读写分离,即当
select是,就去连接读库的连接文件,当时update,insert,delete时就连接写库的连接
文件;
2、通过软件实现读写分离:
mysql-proxy等代理软件也可以实现读写分离功能,但是最常用好用的还是程序实现
读写分离;
3、开发dbproxy;
18.2、读写分离注意的事项:
当配置好mysql的主从复制后,所有对数据库内容的更新就必须在主服务器上进行,因为
数据的复制时单项的,只有在主库上更新,才能避免用户对主服务器上数据库内容的更新与
对从服务器上数据库内容的更新一致,而不会发生冲突;
18.3、读写分离实现策略:
1、读写分离策略:
写库 |
权限 |
密码 |
端口号 |
ip地址 |
web |
select,insert,delete,updata同步主库的mysql库到从库; |
123456 |
3306 |
172.16.1.41 |
读库 |
||||
web |
收回insert,delete,updata权限(主从切换不方便);或者不收回权限,修改配置参数为read-only; |
123456 |
3306 |
172.16.1.42 |
2、注意:
(1)如果主库宕机了修改需要去除从库my.cnf配置文件中的read-only参数;
(2)read-only参数对超级用户和‘all privileges’权限的用户无效;
(3)启动的时候加--read-only参数和在my.cnf中配置的效果是相同的;
3、写主库的授权命令:
grant selelct,insert,update,delete on blog.* to 'blog'@'172.16.1.%' identified by '123456';
4、读从库的授权命令
grant select on blog.* to 'blog'@'172.16.1.%' identified by '123456';
5、在主库上设置主从同步时同步和不同步的库:
#binlog-do-db = test
#允许同步的数据库,默认允许所有的库同步;
#binlog-ignore-db = information_schema
#binlog-ignore-db = performance_schema
#主从同步时设置不需要同步的库;