mysql 主从 启动顺序_MySQL生产环境下的主从复制启动项
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生产环境下的主从复制启动项相关推荐
- mysql主从增量同步_生产环境中mysql主从同步/完整/增量备份
环境:某项目的DB19数据库服务器,无从库也无开过binlog日志,负载有时比较高但基本运行稳定.备份情况:本地每天完整备份保留一周再rsync到异地备份机保留一月,由于数据量的增长加上每天晚上rsy ...
- mysql 命令行启动服务_mysql在windows下命令行启动与关闭服务
Android :fragment介绍 一.关于Fragmemt 1.Fragment(片段),主要是为了支持更多的动态和灵活的用户界面设计,如平板电脑.Fragment允许组合和交换用户界面组件,而 ...
- 四步法分析定位生产环境下MySQL上千条SQL中的问题所在
第一步:通过以下两种方式之一来打开慢查询功能 (1)方式一:通过修改mysql的my.cnf文件 如果是5.0或5.1等版本需要增加以下选项: log-slow-queries="mysql ...
- mysql jail_2.1.5 jail在生产环境下的注意事项
2.1.5 jail在生产环境下的注意事项 我们将jail用在线上的生产环境,发现其中有许多需要注意的事项,如下所示: 1)线上的服务器用的jail机器还是挺多的,通常一台Dell PowerEdge ...
- SQL Server大负载的生产环境下的性能优化:初识元数据优化
相信朋友对SQL Server性能调优相关的知识或多或少都有一些了解.虽然说现在NOSQL相关的技术非常的火热,但是RMDB(关系型数据库)与NOSQL是并存的,并且适用在各种的项目中.在一般的企业级 ...
- 生产环境下的LAMP环境搭建
生产环境下的LAMP环境搭建 V20 学习猿地 ww.lmonkey.com 一.LAMP环境介绍 Web服务器的主要功能是提供网上信息浏览服务.所有网页的集合被称为网站,网站也只有发布到网上才能被 ...
- JAVA生产环境验证_Java生产环境下性能监控与调优详解
本课程将为你讲解如何在生产环境下对Java应用做性能监控与调优:通过本课程,你将掌握多种性能监控工具应用,学会定位并解决诸如内存溢出.cpu负载飙高等问题:学会线上代码调试,Tomcat.Nginx, ...
- 在生产环境下处理EFCore数据库迁移的五种方法
在生产环境下处理EFCore数据库迁移的五种方法 原文链接:https://www.thereformedprogrammer.net/handling-entity-framework-core-d ...
- 你知道怎么在生产环境下部署tomcat吗?
享学课堂特邀作者:老顾 转载请声明出处! 一.前言 小伙伴们在网上看到的很多文章,都是对tomcat的一些介绍,什么配置啊,怎么启动.其实在生产环境中怎么部署,和网上介绍的有很大区别.这篇文章老顾就带 ...
最新文章
- POJ 2586 Y2K Accounting Bug(贪心)
- 第一次 C语言课程设计
- PHP 实现一个可用的redis 事务锁, 解决并发问题
- 聊聊ajax,聊聊Ajax()中data()基本知识以及实例分析
- 人工智能是未来发展趋势吗 用Python入门怎么样 赶紧看看
- suse nginx php,nginx如何优化
- oracle保持会话连接,oracle中连接与会话
- 最小二乘法求解线性回归模型及求解
- 第六届北大CIO班结业暨SOA与BPM论坛成功举办
- matlab短均线滞后项,如何解决均线理论时间滞后性? 方法其实很简单!
- Vue电影网站构建实战教程
- C++:CMake常用变量【CMAKE_CXX_FLAGS、CMAKE_BUILD_TYPE、×_BINARY_DIR】
- JAVA实现:居民电费阶梯式计价器
- Python:实现费马检测算法(附完整源码)
- Nirvana为应用而生,开启公链市场新纪元
- java liferay,用一个简单的Java code获取当前用户的Liferay
- C# 后台 背景图片拼接图片与文字,文字图片生成与背景图片合成
- 106.android简单的GPS实时定位
- 【PostMan使用】PostMan的简单使用教程
- Hive sql 常用命令总结
热门文章
- python备份文件最简单案例_Python实现备份文件实例
- feign返回结果统一处理_在.net core中对接口返回属性名称做统一处理
- qwebkit 网页无法加载图片_网页图片无法显示了?这样就能解决
- c语言int超出范围溢出处理_整数溢出是怎么回事?Python和Numpy的整数为何不一样?...
- lc 297. Serialize and Deserialize Binary Tree
- Linux内核分析——进程的描述和进程的创建
- 操作系统--用户级线程和内核级线程
- javascript 原生事件综合查询
- 通用权限管理平台--数据模型定义
- SqlServer之OutPut