MySQL的复制参数除了我们之前搭建主从时遇到的那几个之外,还有以下两个:

1、log-slave-updates

这个参数用来配置从库上是否启动了二进制日志的功能,默认是不开启的,如果开启了那么从库上的更新操作将会被记录到二进制日志中。

不过在级联复制的架构中,比如某个从库A也要作为其他服务器的主库,像这种链式的复制架构下,这个从库就需要打开此参数,因为从库A下面的从库还需要在从库A上获得二进制日志并进行同步操作。

2、read-only

此参数在生产环境中用的比较多,在生产环境中,从库一般读操作比较多,因为研发人员需要进行大量的查询,因此这个参数要设置,也就是只有超级用户可以进行更新操作。  这样子研发人员就不会乱删数据了,给我们运维找麻烦。

下面我们来演示一下操作步骤:

(1)、首先在主库上创建一个账号:

mysql> grant all privileges on haha.* to 'test'@'%' identified by '12345';

Query OK,0 rows affected, 1 warning (0.01 sec)

(2)、从库上如果直接使用这个账户test登录从库的话,是可以删除数据的。所以我们需要继续设置。

(3)、关闭从库,使用read-only选项启动从数据库。

[root@:vg_adn_tidbCkhsTest:172.31.26.133 /usr/local/mysql/bin]#mysqladmin -uroot -p123456 shutdown

2019-01-03T07:56:25.248454Z mysqld_safe mysqld from pid file /data/data_mysql/mysql.pid ended[1]+ Done mysqld_safe --read-only

[root@:vg_adn_tidbCkhsTest:172.31.26.133 /usr/local/mysql/bin]#mysqld_safe --read-only&

[1] 909

[root@:vg_adn_tidbCkhsTest:172.31.26.133 /usr/local/mysql/bin]#2019-01-03T07:56:38.797120Z mysqld_safe Logging to '/usr/local/mysql/logs/mysql.log'.2019-01-03T07:56:38.826034Z mysqld_safe Starting mysqld daemon with databases from /data/data_mysql

(4)这个时候我们在从库上使用账户test来登录,注意是从库。然后进行删除操作。

[root@:vg_adn_tidbCkhsTest:34.202.241.16:172.31.26.133 /usr/local/mysql/bin]#mysql -utest -p12345

Welcometo the MariaDB monitor. Commands end with ; or\g.

Your MySQL connection idis 5MySQL[(none)]> usehahaDatabasechangedMySQL[haha]> select * from hehe where id=7;+------+----------+

| id | name |

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

| 7 | xiaowang |

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

1 row in set (0.00sec)

MySQL[haha]> delete from hehe where id = 7;

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

可以看到使用read-only选项登录的从数据库是拒绝普通用户的更新操作,以确保数据库的安全。

注意:今天我也做过其他的试验:比如在从库上创建一个账户然后赋予权限,然后再set global read-only=1,(我在my.cnf文件中也设置了read-only=ON)发现即使这样子设置后这个账户登录后仍然是可以删除数据的,后来做了上面的这几个步骤就成功了,因此我觉得大概有两种方法来确保从库进行读操作而不能更新,一个是上面的方法,还有一个是创建的用户仅仅赋予select查询权限,然后使用这些普通用户登录,禁止他们修改数据。当然第一种方法最常见。

指定复制的数据库或者表

有时候用户只需要将关键的数据库或者表备份到从库上,那么我们可以设置一下几个值:

replicate-do-db             #需要复制的数据库replicate-do-table                #需要复制的数据库的表

replicate-ignore-db              #不需要复制的数据库replicate-ignore-table

以上的参数可以在my.cnf中设置,当然也可以在mysql的启动参数里面进行设置。如果需要指定同步多个数据库或表,依次重复写就可以了。

现在我们做个实验:只复制主库的fruit数据库下的apple这个表,而orange表则不复制。

(1)、在主库上创建数据库和两个表

mysql> create databasefruit;

Query OK,1 row affected (0.00sec)

mysql> usefruitDatabasechanged

mysql> create tableapple(-> id tinyint,-> address char(16)->);

Query OK,0 rows affected (0.02sec)

mysql> create table orange( id tinyint, address char(16) );

Query OK,0 rows affected (0.01sec)mysql> insert into apple values (1,'shandong');

Query OK,1 row affected (0.00sec)

mysql> insert into orange values (1,'hainan');

Query OK,1 row affected (0.00 sec)

(2)、从库以指定复制表的参数启动

[root@:vg_adn_tidbCkhsTest:172.31.26.133 /usr/local/mysql/bin]#mysqld_safe --replicate-do-table=fruit.apple & #以指定复制表的参数进行启动

[1] 18874

[root@:vg_adn_tidbCkhsTest:172.31.26.133 /usr/local/mysql/bin]#2019-01-03T09:04:13.797663Z mysqld_safe Logging to '/usr/local/mysql/logs/mysql.log'.2019-01-03T09:04:13.827186Z mysqld_safe Starting mysqld daemon with databases from /data/data_mysql[root@:vg_adn_tidbCkhsTest:34.202.241.16:172.31.26.133 /usr/local/mysql/bin]#mysql -uroot -p

Enter password:

Welcometo the MariaDB monitor. Commands end with ; or\g.

Your MySQL connection idis 4MySQL[(none)]> usefruitDatabasechanged

MySQL[fruit]> show tables;                                                     #我发现只有一张表,而没有orange这个表

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

| Tables_in_fruit |

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

| apple |

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

1 row in set (0.00sec)

MySQL[fruit]> select * fromapple;+------+----------+

| id | address |

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

| 1 | shandong |

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

1 row in set (0.00 sec)

从测试的结果来看,在主库上创建了两个表,而在从库只有我指定复制的那张表的数据同步了过来,其他的都没有。

mysql 主从 启动顺序_MySQL生产环境下的主从复制启动项相关推荐

  1. mysql主从增量同步_生产环境中mysql主从同步/完整/增量备份

    环境:某项目的DB19数据库服务器,无从库也无开过binlog日志,负载有时比较高但基本运行稳定.备份情况:本地每天完整备份保留一周再rsync到异地备份机保留一月,由于数据量的增长加上每天晚上rsy ...

  2. mysql 命令行启动服务_mysql在windows下命令行启动与关闭服务

    Android :fragment介绍 一.关于Fragmemt 1.Fragment(片段),主要是为了支持更多的动态和灵活的用户界面设计,如平板电脑.Fragment允许组合和交换用户界面组件,而 ...

  3. 四步法分析定位生产环境下MySQL上千条SQL中的问题所在

    第一步:通过以下两种方式之一来打开慢查询功能 (1)方式一:通过修改mysql的my.cnf文件 如果是5.0或5.1等版本需要增加以下选项: log-slow-queries="mysql ...

  4. mysql jail_2.1.5 jail在生产环境下的注意事项

    2.1.5 jail在生产环境下的注意事项 我们将jail用在线上的生产环境,发现其中有许多需要注意的事项,如下所示: 1)线上的服务器用的jail机器还是挺多的,通常一台Dell PowerEdge ...

  5. SQL Server大负载的生产环境下的性能优化:初识元数据优化

    相信朋友对SQL Server性能调优相关的知识或多或少都有一些了解.虽然说现在NOSQL相关的技术非常的火热,但是RMDB(关系型数据库)与NOSQL是并存的,并且适用在各种的项目中.在一般的企业级 ...

  6. 生产环境下的LAMP环境搭建

    生产环境下的LAMP环境搭建 V20 学习猿地  ww.lmonkey.com 一.LAMP环境介绍 Web服务器的主要功能是提供网上信息浏览服务.所有网页的集合被称为网站,网站也只有发布到网上才能被 ...

  7. JAVA生产环境验证_Java生产环境下性能监控与调优详解

    本课程将为你讲解如何在生产环境下对Java应用做性能监控与调优:通过本课程,你将掌握多种性能监控工具应用,学会定位并解决诸如内存溢出.cpu负载飙高等问题:学会线上代码调试,Tomcat.Nginx, ...

  8. 在生产环境下处理EFCore数据库迁移的五种方法

    在生产环境下处理EFCore数据库迁移的五种方法 原文链接:https://www.thereformedprogrammer.net/handling-entity-framework-core-d ...

  9. 你知道怎么在生产环境下部署tomcat吗?

    享学课堂特邀作者:老顾 转载请声明出处! 一.前言 小伙伴们在网上看到的很多文章,都是对tomcat的一些介绍,什么配置啊,怎么启动.其实在生产环境中怎么部署,和网上介绍的有很大区别.这篇文章老顾就带 ...

最新文章

  1. POJ 2586 Y2K Accounting Bug(贪心)
  2. 第一次 C语言课程设计
  3. PHP 实现一个可用的redis 事务锁, 解决并发问题
  4. 聊聊ajax,聊聊Ajax()中data()基本知识以及实例分析
  5. 人工智能是未来发展趋势吗 用Python入门怎么样 赶紧看看
  6. suse nginx php,nginx如何优化
  7. oracle保持会话连接,oracle中连接与会话
  8. 最小二乘法求解线性回归模型及求解
  9. 第六届北大CIO班结业暨SOA与BPM论坛成功举办
  10. matlab短均线滞后项,如何解决均线理论时间滞后性? 方法其实很简单!
  11. Vue电影网站构建实战教程
  12. C++:CMake常用变量【CMAKE_CXX_FLAGS、CMAKE_BUILD_TYPE、×_BINARY_DIR】
  13. JAVA实现:居民电费阶梯式计价器
  14. Python:实现费马检测算法(附完整源码)
  15. Nirvana为应用而生,开启公链市场新纪元
  16. java liferay,用一个简单的Java code获取当前用户的Liferay
  17. C# 后台 背景图片拼接图片与文字,文字图片生成与背景图片合成
  18. 106.android简单的GPS实时定位
  19. 【PostMan使用】PostMan的简单使用教程
  20. Hive sql 常用命令总结

热门文章

  1. python备份文件最简单案例_Python实现备份文件实例
  2. feign返回结果统一处理_在.net core中对接口返回属性名称做统一处理
  3. qwebkit 网页无法加载图片_网页图片无法显示了?这样就能解决
  4. c语言int超出范围溢出处理_整数溢出是怎么回事?Python和Numpy的整数为何不一样?...
  5. lc 297. Serialize and Deserialize Binary Tree
  6. Linux内核分析——进程的描述和进程的创建
  7. 操作系统--用户级线程和内核级线程
  8. javascript 原生事件综合查询
  9. 通用权限管理平台--数据模型定义
  10. SqlServer之OutPut