返回顶部
首页 > 资讯 > 数据库 >MySQL Inception的安装和使用
  • 535
分享到

MySQL Inception的安装和使用

2024-04-02 19:04:59 535人浏览 八月长安
摘要

本篇内容主要讲解“Mysql Inception的安装和使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql Inception的安装和使用”吧!

本篇内容主要讲解“Mysql Inception的安装和使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习mysql Inception的安装和使用”吧!

Inception 是一个集审核、执行、备份及生成回滚语句于一身的Mysql自动化运维工具,支持MySQL 5.5、5.6以及Percona等主流版本。

测试环境:Centos 6.9
下载源码
[root@MySQL01 ~]# cd /fire/
[root@MySQL01 fire]# mkdir inception
[root@MySQL01 fire]# cd inception/
[root@MySQL01 inception]# git clone https://GitHub.com/mysql-inception/inception.git
Initialized empty Git repository in /fire/inception/inception/.git/
remote: Counting objects: 2018, done.
remote: Total 2018 (delta 0), reused 0 (delta 0), pack-reused 2018
Receiving objects: 100% (2018/2018), 11.80 MiB | 37 KiB/s, done.
Resolving deltas: 100% (522/522), done.

安装依赖包
yum install bison
yum install cmake
yum install ncurses-devel
yum install openssl-devel
yum install GCc-c++ libgcc gcc

通过sh inception_build.sh debug脚本方式安装
[root@MySQL01 inception]# sh inception_build.sh debug
...
-- Installing: /fire/inception/inception/debug/mysql/man/man1/mysql.1
-- Installing: /fire/inception/inception/debug/mysql/man/man1/mysql_fix_extensions.1
-- Installing: /fire/inception/inception/debug/mysql/man/man1/mysqltest.1
-- Installing: /fire/inception/inception/debug/mysql/man/man1/mysql_client_test.1
-- Installing: /fire/inception/inception/debug/mysql/man/man1/mysql_waitpid.1
-- Installing: /fire/inception/inception/debug/mysql/man/man1/mysql.server.1
-- Installing: /fire/inception/inception/debug/mysql/man/man8/mysqld.8
-- Installing: /fire/inception/inception/debug/mysql/support-files/solaris/postinstall-solaris

默认会安装在/fire/inception/inception/debug/mysql下面

编辑配置文件

  1. [root@MySQL01 script]# vim /etc/inc.cnf

  2. [inception]

  3. general_log=1

  4. general_log_file=/var/inception/log/inception.log

  5. port=6690

  6. Socket=/fire/inception/inception/debug/mysql/inc.socket

  7. character-set-client-handshake=0

  8. character-set-server=utf8


  9. # MySQL支持字符集

  10. inception_support_charset=utf8


  11. inception_remote_backup_host=192.168.56.102

  12. inception_remote_backup_port=3306

  13. inception_remote_system_user=inception

  14. inception_remote_system_passWord=inception


  15. #inception_remote_charset=utf8mb4

  16. inception_enable_nullable=0

  17. inception_check_primary_key=1

  18. inception_check_column_comment=1

  19. inception_check_table_comment=1

  20. inception_enable_blob_type=1

  21. inception_check_column_default_value=1


  22. # OSC

  23. inception_osc_on=1

  24. inception_osc_min_table_size=1

  25. inception_osc_bin_dir=/script/percona-toolkit-3.0.2/bin

  26. inception_osc_check_interval=5

  27. inception_osc_chunk_time=0.1


启动
# /fire/inception/inception/debug/mysql/bin/Inception --defaults-file=/etc/inc.cnf &

执行SQL
编辑python 2脚本,为一张100万行的大表添加字段

  1. [root@MySQL01 script]# vim inception.py

  2. #!/usr/bin/Python2.6

  3. #-\*-coding: utf-8-\*-

  4. import MySQLdb

  5. sql='\

  6. inception_magic_start;\

  7. use test;\

  8. alter table item_order add loc5 varchar(30) not null default \'xxx\' comment \'efg\';\

  9. inception_magic_commit;'

  10. try:

  11.     conn=MySQLdb.connect(host='127.0.0.1',user='',passwd='',db='',port=6690)

  12.     cur=conn.cursor()

  13.     ret=cur.execute(sql)

  14.     result=cur.fetchall()

  15.     num_fields = len(cur.description)

  16.     field_names = [i[0] for i in cur.description]

  17.     print field_names

  18.     for row in result:

  19.         print row[0], "|",row[1],"|",row[2],"|",row[3],"|",row[4],"|",

  20.         row[5],"|",row[6],"|",row[7],"|",row[8],"|",row[9],"|",row[10]

  21.     cur.close()

  22.     conn.close()

  23. except MySQLdb.Error,e:

  24.      print "Mysql Error %d: %s" % (e.args[0], e.args[1])


执行脚本
[root@MySQL01 script]# python2.6 inception.py

登录Inception查看OSC的执行过程

  1. # /mysql_software_56/bin/mysql -uroot -h 127.0.0.1 -P 6690

  2. mysql> inception get osc processlist\G

  3. *************************** 1. row ***************************

  4.     DBNAME: test

  5.  TABLENAME: item_order

  6.    COMMAND: alter table item_order add loc5 varchar(30) not null default 'xxx' comment 'efg'

  7.    SQLSHA1: *862B1979B3751217FE56799A0216A2629F2FFD4C

  8.    PERCENT: 100

  9. REMAINTIME: 00:00

  10. INFOMATION: No slaves found. See --recursion-method if host MySQL01 has slaves.

  11. Not checking slave lag because no slaves were found and --check-slave-lag was not specified.

  12. Operation, tries, wait:

  13.   analyze_table, 10, 1

  14.   copy_rows, 10, 0.25

  15.   create_triggers, 10, 1

  16.   drop_triggers, 10, 1

  17.   swap_tables, 10, 1

  18.   update_foreign_keys, 10, 1

  19. Not updating foreign keys because --alter-foreign-keys-method=none. Foreign keys that reference the table will no longer work.

  20. Altering `test`.`item_order`...

  21. Creating new table...

  22. CREATE TABLE `test`.`_item_order_new` (

  23.   `order_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '订单编号',

  24.   `loc_id` tinyint(3) unsigned NOT NULL COMMENT '地区编号',

  25.   `order_create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '订单生成日期',

  26.   `order_expire_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '订单过期日期',

  27.   `item_id` int(10) unsigned NOT NULL COMMENT '商品编号',

  28.   `item_cnt` int(10) unsigned NOT NULL COMMENT '商品数量',

  29.   `order_status` tinyint(3) unsigned NOT NULL COMMENT '订单状态,0-失效,1-交易成功',

  30.   `tran_amount` bigint(20) unsigned NOT NULL COMMENT '交易金额',

  31.   PRIMARY KEY (`order_id`),

  32.   KEY `idx_order_loc_status` (`loc_id`,`order_status`,`order_expire_date`),

  33.   KEY `idx_order_loc_exp` (`loc_id`,`order_expire_date`),

  34.   KEY `idx_order_stat_loc_item` (`order_status`,`loc_id`,`item_id`,`tran_amount`),

  35.   KEY `idx_item_id` (`item_id`)

  36. ) ENGINE=InnoDB AUTO_INCREMENT=1000001 DEFAULT CHARSET=utf8 COMMENT='订单表'

  37. Created new table test._item_order_new OK.

  38. Altering new table...

  39. ALTER TABLE `test`.`_item_order_new` add loc5 varchar(30) not null default 'xxx' comment 'efg'

  40. Altered `test`.`_item_order_new` OK.

  41. 2018-04-07T02:03:33 Creating triggers...

  42. CREATE TRIGGER `pt_osc_test_item_order_del` AFTER DELETE ON `test`.`item_order` FOR EACH ROW DELETE IGNORE FROM `test`.`_item_order_new` WHERE `test`.`_item_order_new`.`order_id` <=> OLD.`order_id`

  43. CREATE TRIGGER `pt_osc_test_item_order_upd` AFTER UPDATE ON `test`.`item_order` FOR EACH ROW BEGIN DELETE IGNORE FROM `test`.`_item_order_new` WHERE !(OLD.`order_id` <=> NEW.`order_id`) AND `test`.`_item_order_new`.`order_id` <=> OLD.`order_id`;REPLACE INTO `test`.`_item_order_new` (`order_id`, `loc_id`, `order_create_date`, `order_expire_date`, `item_id`, `item_cnt`, `order_status`, `tran_amount`) VALUES (NEW.`order_id`, NEW.`loc_id`, NEW.`order_create_date`, NEW.`order_expire_date`, NEW.`item_id`, NEW.`item_cnt`, NEW.`order_status`, NEW.`tran_amount`);END

  44. CREATE TRIGGER `pt_osc_test_item_order_ins` AFTER INSERT ON `test`.`item_order` FOR EACH ROW REPLACE INTO `test`.`_item_order_new` (`order_id`, `loc_id`, `order_create_date`, `order_expire_date`, `item_id`, `item_cnt`, `order_status`, `tran_amount`) VALUES (NEW.`order_id`, NEW.`loc_id`, NEW.`order_create_date`, NEW.`order_expire_date`, NEW.`item_id`, NEW.`item_cnt`, NEW.`order_status`, NEW.`tran_amount`)

  45. 2018-04-07T02:03:33 Created triggers OK.

  46. 2018-04-07T02:03:33 Copying approximately 1000219 rows...

  47. INSERT LOW_PRIORITY IGNORE INTO `test`.`_item_order_new` (`order_id`, `loc_id`, `order_create_date`, `order_expire_date`, `item_id`, `item_cnt`, `order_status`, `tran_amount`) SELECT `order_id`, `loc_id`, `order_create_date`, `order_expire_date`, `item_id`, `item_cnt`, `order_status`, `tran_amount` FROM `test`.`item_order` FORCE INDEX(`PRIMARY`) WHERE ((`order_id` >= ?)) AND ((`order_id` <= ?)) LOCK IN SHARE MODE

  48. SELECT `order_id` FROM `test`.`item_order` FORCE INDEX(`PRIMARY`) WHERE ((`order_id` >= ?)) ORDER BY `order_id` LIMIT ?, 2

  49. 2018-04-07T02:05:07 Copied rows OK.

  50. 2018-04-07T02:05:07 Swapping tables...

  51. RENAME TABLE `test`.`item_order` TO `test`.`_item_order_old`, `test`.`_item_order_new` TO `test`.`item_order`

  52. 2018-04-07T02:05:10 Swapped original and new tables OK.

  53. 2018-04-07T02:05:10 Dropping old table...

  54. SET foreign_key_checks=0

  55. DROP TABLE IF EXISTS `test`.`_item_order_old`

  56. 2018-04-07T02:05:11 Dropped old table `test`.`_item_order_old` OK.

  57. 2018-04-07T02:05:11 Dropping triggers...

  58. DROP TRIGGER IF EXISTS `test`.`pt_osc_test_item_order_del`;

  59. DROP TRIGGER IF EXISTS `test`.`pt_osc_test_item_order_upd`;

  60. DROP TRIGGER IF EXISTS `test`.`pt_osc_test_item_order_ins`;

  61. 2018-04-07T02:05:11 Dropped triggers OK.

  62. # Event Count

  63. # ====== =====

  64. # INSERT 727

  65. Successfully altered `test`.`item_order`.


  66. 1 row in set (0.00 sec)


语句执行完成
[root@MySQL01 script]# python2.6 inception.py 
['ID', 'stage', 'errlevel', 'stagestatus', 'errORMessage', 'SQL', 'Affected_rows', 'sequence', 'backup_dbname', 'execute_time', 'sqlsha1']
1 | RERUN | 0 | Execute Successfully | None | 2 | EXECUTED | 0 | Execute Successfully
Backup successfully | None |

备份及回滚语句的生成条件:
线上服务器必须要打开 binlog,在启动时需要设置参数log_bin、log_bin_index等关于 binlog 的参数。不然不会备份及生成回滚语句。
参数binlog_format必须要设置为 mixed 或者 row 模式。
参数 server_id 必须要设置为非0及非1。

  1. mysql> show global variables like '%log%bin%';

  2. +---------------------------------+------------------------------------+

  3. | Variable_name | Value |

  4. +---------------------------------+------------------------------------+

  5. | log_bin | ON |

  6. | log_bin_basename | /mysql_56_3306/log/mysql-bin |

  7. | log_bin_index | /mysql_56_3306/log/mysql-bin.index |

  8. | log_bin_trust_function_creators | ON |

  9. | log_bin_use_v1_row_events | OFF |

  10. | sql_log_bin | ON |

  11. +---------------------------------+------------------------------------+

  12. 6 rows in set (0.00 sec)


  13. mysql> show global variables like 'binlog_format';

  14. +---------------+-------+

  15. | Variable_name | Value |

  16. +---------------+-------+

  17. | binlog_format | ROW |

  18. +---------------+-------+

  19. 1 row in set (0.00 sec)


  20. mysql> show global variables like 'server_id';

  21. +---------------+-------+

  22. | Variable_name | Value |

  23. +---------------+-------+

  24. | server_id | 102 |

  25. +---------------+-------+

  26. 1 row in set (0.00 sec)


查看备份表

  1. mysql> show databases;

  2. +--------------------------+

  3. | Database |

  4. +--------------------------+

  5. | information_schema |

  6. | 192_168_56_101_3306_test |

  7. | inception |

  8. | mysql |

  9. | performance_schema |

  10. | sale |

  11. | test |

  12. +--------------------------+

  13. 8 rows in set (0.00 sec)


  14. mysql> use 192_168_56_101_3306_test

  15. Reading table information for completion of table and column names

  16. You can turn off this feature to get a quicker startup with -A


  17. Database changed

  18. mysql> show tables;

  19. +------------------------------------+

  20. | Tables_in_192_168_56_101_3306_test |

  21. +------------------------------------+

  22. | $_$inception_backup_information$_$ |

  23. | item_order |

  24. +------------------------------------+

  25. 2 rows in set (0.00 sec)


  26. mysql> select * from item_order;

  27. +----+-----------------------------------------------------+-----------------+

  28. | id | rollback_statement | opid_time |

  29. +----+-----------------------------------------------------+-----------------+

  30. | 1 | ALTER TABLE `test`.`item_order` DROP COLUMN `loc5`; | 1523037912_28_1 |

  31. +----+-----------------------------------------------------+-----------------+

  32. 1 row in set (0.00 sec)

到此,相信大家对“MySQL Inception的安装和使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL Inception的安装和使用

本文链接: https://lsjlt.com/news/59757.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL Inception的安装和使用
    本篇内容主要讲解“MySQL Inception的安装和使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL Inception的安装和使用”吧! ...
    99+
    2024-04-02
  • MySQL Inception For Linux怎么安装
    这篇文章主要为大家展示了“MySQL Inception For Linux怎么安装”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL Inception...
    99+
    2024-04-02
  • mysql审核平台yearning及inception如何安装
    小编给大家分享一下mysql审核平台yearning及inception如何安装,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!#...
    99+
    2024-04-02
  • 怎么安装和使用mysql的docker
    这篇文章主要介绍“怎么安装和使用mysql的docker”,在日常操作中,相信很多人在怎么安装和使用mysql的docker问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么安装和使用mysql的docker...
    99+
    2023-06-04
  • 如何使用Docker安装Redis和Mysql
    本篇内容介绍了“如何使用Docker安装Redis和Mysql”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!最近准备写如何实现分布式锁的文章...
    99+
    2023-06-19
  • 集群Cluster MySQL的安装配置和使用
    MySQL Cluster MySQL集群基本概念:“NDB” 是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点。 MySQL Cluster 能够使用多种故障切换和负载平衡选项配置NDB存储...
    99+
    2024-04-02
  • srvany的安装和使用
    Srvany是Windows操作系统中的一个工具,它允许您将任何可执行文件作为服务运行。下面是Srvany的安装和使用步骤:1. 下...
    99+
    2023-09-14
    srvany
  • 典型NoSQL数据库的安装和使用——MongoDB安装和使用
    安装方式采用apt-get install mongodb命令直接进行,采用源码包安装也可以hadoop@dblab:/$ sudo apt-get updatehadoop@dblab:/$ sudo a...
    99+
    2024-04-02
  • Linux下安装和使用MySQL的详细教程
    ✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识...
    99+
    2023-09-14
    linux mysql 运维
  • mysql 安装 和简单使用技巧1
    # mysql_install_db  --user=mysql -datadir=/var/lib/mysql   初始化数据vncviewer  172.40.50.117...
    99+
    2024-04-02
  • 怎么在Linux下安装和使用MySQL
    本篇内容介绍了“怎么在Linux下安装和使用MySQL”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、引...
    99+
    2024-04-02
  • [python] mysql安装使用
    下载安装MySQLdb 下载地址:http://pypi.python.org/simple/MySQL-python/<1>linux版本要先安装setuptools,然后在下载文件目录下,修改mysite.cfg,指定本地m...
    99+
    2023-01-31
    python mysql
  • Mysql (四)Mysql安装与使用
    持续更新中................ ...
    99+
    2024-04-02
  • pytesseract库的安装和使用
    在写爬虫的时候总是遇到一些以图片的形式展示的信息,因此要怎么解析图片上的信息呢?在Google上查了一下,需要安装pytesseract和pillow(我用的python3.7)和Tesseract-OCR 1. 安装pytesserac...
    99+
    2023-01-30
    pytesseract
  • mariadb安装和使用
    安装和使用mariadbcentos 7 直接提供centos 6通用二进制安装过程1、准备数据目录以/mydata/data为例2、配置mariadb#groupadd -r -g 200 mysql#u...
    99+
    2024-04-02
  • zabbix安装和使用
    官方网站:www.zabbix.com系统版本:centos6.x软件版本:zabbix-2.4.7.tar.gz服务端IP=192.168.1.100客户端IP=192.168.1.200使用源代码安装:...
    99+
    2024-04-02
  • 安装和使用 Elasticsearch
    安装和使用 ElasticsearchElasticsearch 是开源搜索平台的新成员,实时数据分析的神器,发展迅猛,基于 Lucene、RESTful、分布式、面向云计算设计、实时搜索、全文搜...
    99+
    2024-04-02
  • phpstudy安装和使用
    一、phpstudy 1)下载网址 http://www.xp.cn/ 2)过程 1、往下拉可以看到推荐版本我下载的是8.1版本,注意下载路径不可以有中文或空格 2、按需下载 3、安装完成后解压,点击这个一步一步做就可以啦 3)简单...
    99+
    2023-09-03
    php 服务器 web安全
  • DataGrip安装和使用
    需要资料包的额可以关注私发信息,分享给你 一、安装 双击datagrip-2018.3.4.exe ,然后一路下一步。安装成功 二、汉化datagrip 将课后资料中datagrip汉化包下面的resources_cn.jar文件放...
    99+
    2023-09-01
    intellij-idea java
  • nginx安装和使用
    1.安装参考 # 解决 ./configure: error: C compiler cc is not found# 或者 make: *** No rule to make target `bui...
    99+
    2023-10-11
    nginx 运维
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作