45、mysql主从复制应用扩展

mysql主从复制应用扩展


1.主从服务器的时间要同步(NTP)

创建一个时间服务器

*/5 * * * * /user/sbin/ntpdate ntpserver &> /dev/null

2.如何限制从服务器只读(配置在mysqld中)

在从服务器上启动read-only=ON

注意:仅能限制那不具有super权限的用户无法执行写操作,root的用户不受限

从服务器

SHOW GLOBAL VARIABLES LIKE '%read_only%';

主服务器

use mysql

GRANT ALL ON mydb.* TO 'testuser'@'192.168.130.%' IDENTIFIED BY 'testpass';

SELECT User,Host,Password FROM user; 

mysql -utestuser -h192.168.130.62 -p

use mydb;

MariaDB [mydb]> CREATE TABLE t1;

ERROR 1290 (HY000): The MariaDB server is running with the --read-only option so it cannot execute this statement

想限制所有用户,启用screen在里面运行

FLUSH TABLES WITH READ LOCK;


3.如何主从复制时的事务安全?(在)

sync_binlog=1 (每当有事务提交时,立即将与二进制日志缓冲区中的内容同步到二进制日志文件)


4.半同步复制

主服务器发起任何写操作时,这些写操作必须写到二进制日志中,并通知给从服务器。从服务器必须在本地完成数据修改然后反馈主服务器写操作已完成,主服务器再返馈前端OK。

多个从找一个反映最快的来响应,为了确保主从的数据一致。

/usr/local/mysql/lib/plugin/semisync_master.so 在主服务器上安装

/usr/local/mysql/lib/plugin/semisync_slave.so 在离主服务器最近的从服务器上安装

主服务器

mysql

INSTALL PLUGIN RPL_SEMI_SYNC_MASTER SONAME 'semisync_master.so';

SHOW GLOBAL VARIABLES LIKE '%semi%';

+------------------------------------+--------------+

| Variable_name                      | Value        |

+------------------------------------+--------------+

| rpl_semi_sync_master_enabled       | OFF          | 是否启动半同步功能

| rpl_semi_sync_master_timeout       | 10000        | 连接从节点的超时时间

| rpl_semi_sync_master_trace_level   | 32           |

| rpl_semi_sync_master_wait_no_slave | ON           | 是否检测半同步从节点上线

| rpl_semi_sync_master_wait_point    | AFTER_COMMIT |

+------------------------------------+--------------+

SET GLOBAL rpl_semi_sync_master_enabled = ON;

SET GLOBAL  rpl_semi_sync_master_timeout = 10000; 

从服务器

mysql

INSTALL PLUGIN RPL_SEMI_SYNC_SLAVE SONAME 'semisync_slave.so';

SHOW GLOBAL VARIABLES LIKE '%semi%';

SET global rpl_semi_sync_slave_enabled = ON

STOP SLAVE io_therad;

START SLAVE io_therad;

在主服务器验证半同步

SHOW GLOBAL STATUS LIKE '%semi%';

卸载插件:

INSTALL PLUGIN plugin_name SONAME 'shared_library_name'

UNINSTALL PLUGIN plugin_name

半同步复制一旦某次等待超时,会自动降级为异步

5、复制过滤器(仅复制主服务器部分数据):

可以在主服务器上过滤也可以在从服务器上过滤,考虑的及时点还原问题,一般在从服务器上做过滤。


master上做过滤:

binlog_do_db=(白名单)

binlog_ignore_db=(黑名单)

slave上做过滤

replicate_do_db=(数据库白名单)

replicate_ignore_db=(数据库黑名单)

replicate_do_table= db_name.table_name (数据库白名单)

replicate_ignore_db= db_name.table_name (数据库黑名单)

使用正则表达式

replicate_wild_do_table=

replicate_wild_igonre_table=


想配置永久有效,将其配置到my.cnf的[mysqld]下。


猜你喜欢

转载自blog.51cto.com/kaiyuandiantang/2320444