MySQL InnoDB memcached插件

InnoDB memcached插件
InnoDB memcached插件(daemon_memcached)提供了一个集成的memcached守护进程,可以自动存储和检索InnoDB表中的数据,将MySQL服务器变成一个快速的“key value store”。您可以使用简单的get、set和incr操作来避免与SQL解析和构造查询优化计划相关的性能开销,而不是在SQL 中制定查询。您还可以通过SQL访问相同的InnoDB表,以获得便利性,复杂的查询,批量操作以及传统数据库软件的其他优势。

这个“nosql-style”的接口使用memcached API来加速数据库操作,让InnoDB使用其缓冲池机制处理内存缓存。在InnoDB表中,通过memcached操作(如add、set和incr)修改的数据被存储在磁盘中。

InnoDB memcached插件的好处
下面概述daemon_memcached插件的优点。InnoDB表和memcached的组合比单独使用任何一个都有优势。
.直接访问InnoDB存储引擎避免了SQL的解析和规划开销。

.在与MySQL服务器相同的进程空间中运行memcached可以避免来回传递请求的网络开销。

.使用memcached协议写入的数据被透明地写入到InnoDB表中,而不需要经过MySQL SQL层。更新非关键数据时,可以通过控制写频率来获得更高的原始性能。

.通过memcached协议请求的数据可以透明地从InnoDB表中查询,而无需经过MySQL SQL层。

.对相同数据的后续请求由InnoDB缓冲池提供。缓冲池处理内存中的缓存。您可以使用InnoDB配置选项来调优数据密集型操作的性能。

.根据应用程序的类型,数据可以是非结构化的,也可以是结构化的。您可以为数据创建一个新表,也可以使用现有的表。

.InnoDB可以将多个列值组合和分解为单个memcached项值,从而减少应用程序中需要解析和连接字符串的数量。例如,你可以将字符串值2|4| 6|8存储在memcached缓存中,并让InnoDB根据分隔符分割该值,然后将结果存储在4个数值列中。

.内存和磁盘之间的传输是自动处理的,简化了应用程序逻辑。

.数据存储在MySQL数据库中,以防止崩溃、中断和损坏。

.你可以通过SQL访问底层的InnoDB表,用于报告、分析、即席查询、批量加载、多步事务计算、集合操作(如union和intersection),以及其他适合SQL表现力和灵活性的操作。

.可以在主服务器上使用daemon_memcached插件并结合MySQL复制来确保高可用性。

.memcached与MySQL的集成提供了一种持久化内存数据的方法,这样您就可以将它用于更重要的数据类型。您可以在应用程序中使用更多的add、incr和类似的写操作,而不必担心数据可能丢失。您可以停止和启动memcached服务器,而不会丢失对缓存数据的更新。为了防止意外的中断,你可以利用InnoDB的崩溃恢复、复制和备份功能。

.InnoDB快速主键查找的方式非常适合memcached的单元素查询。daemon_memcached插件使用的直接、低级数据库访问路径对于键值查找来说比等价的SQL查询要高效得多。

.memcached的序列化特性可以将复杂的数据结构、二进制文件甚至代码块转换为可存储的字符串,它提供了一种将此类对象放入数据库的简单方 法。

.因为可以通过SQL访问底层数据,所以可以生成报告、跨多个键进行搜索或更新,并在memcached数据上调用AVG()和MAX()等函数。使用 memcached所有这些操作都是昂贵或复杂的。

.不需要在启动时手动将数据加载到memcached中。当应用程序请求特定的键时,值会自动从数据库中检索出来,并使用InnoDB缓冲池缓存在内存 中。

.因为memcached消耗的CPU相对较少,而且它的内存占用很容易控制,所以它可以在同一个系统上与MySQL实例一起轻松运行。

.因为数据一致性是由常规InnoDB表使用的机制强制执行的,所以你不必担心memcached数据过期,或者在缺少键的情况下查询数据库的回滚逻辑 。

InnoDB memcached架构
InnoDB memcached插件将memcached作为一个MySQL插件守护进程来实现直接访问InnoDB存储引擎,绕过MySQL SQL层。

daemon_memcached插件的特性:
.Memcached作为mysqld的守护程序插件。mysqld和memcached都运行在相同的进程空间中,对数据的访问延迟非常低。

.直接访问InnoDB表,绕过SQL解析器,优化器,甚至Handler API层。

.标准memcached协议,包括基于文本的协议和二进制协议。daemon_memcached插件通过memcapable命令的所有55个兼容性测试。

.多列支持。您可以将多个列映射到键/值存储的“值”部分,列值由用户指定的分隔符分隔。

.默认情况下,memcached协议用于直接向InnoDB读取和写入数据,让MySQL使用InnoDB缓冲池管理内存缓存。默认设置代表了高可靠性和数据库 应用程序最少意外的组合。例如,默认设置避免在数据库端提交未提交的数据,或者为memcached get请求返回过时的数据。

.高级用户可以将系统配置为传统的memcached服务器,所有数据只缓存在memcached引擎(内存缓存)中,或者使用“memcached引擎”(内存缓存) 和InnoDB memcached引擎(InnoDB作为后端持久存储)的组合。

.通过innodb_api_bk_commit_interval、daemon_memcached_r_batch_size和daemon_memcached_w_batch_size配置选项来控制数据在InnoDB和 memcached操作之间来回传递的频率。批量大小选项的默认值为1,表示最大可靠性。

.通过daemon_memcached_option配置参数指定memcached选项的能力。例如,您可以更改memcached监听的端口,减少最大同时连接数,更改键值 对的最大内存大小,或打开错误日志的调试消息。

.innodb_api_trx_level配置选项控制memcached处理的查询的事务隔离级别。尽管memcached没有事务的概念,但是您可以使用这个选项来控制 memcached对daemon_memcached插件使用的表发出的SQL语句所引起的更改的处理速度。默认情况下,innodb_api_trx_level设置为READ UNCOMMITTED。

.innodb_api_enable_mdl选项可以用来在MySQL级别锁定表,这样映射的表就不能被DDL通过SQL接口删除或修改。如果没有锁,表可以从MySQL层 删除,但仍然保留在InnoDB存储中,直到memcached或其他用户停止使用它。MDL代表“元数据锁定”。

InnoDB memcached与传统memcached的区别
您可能已经熟悉在MySQL中使用memcached,如使用MySQL与memcached中所述。本节描述集成的InnoDB memcached插件与传统memcached的不同之 处。
.安装: memcached库随MySQL服务器一起提供,使得安装和设置相对容易。安装过程中需要运行innodb_memcached_config.sql脚本创建一个 demo_test表供memcached使用,发出INSTALL PLUGIN语句以启用daemon_memcached插件,并将所需的memcached选项添加到MySQL配置文件或启动 脚本中。对于memcp、memcat和memcapable等其他实用程序,您可能仍然需要安装传统的memcached发行版。

.部署:对于传统的memcached,通常会运行大量低容量的memcached服务器。但是,典型的daemon_memcached插件部署只涉及少量已经在运行 MySQL的中等或高性能服务器。这种配置的好处是提高了单个数据库服务器的效率,而不是利用未使用的内存或在大量服务器上分布查找。在默 认配置中,memcached只使用很少的内存,而内存中的查找是从InnoDB缓冲池中提供的,它会自动缓存最新和频繁使用的数据。与传统的MySQL服 务器实例一样,保持innodb_buffer_pool_size配置选项的值尽可能高(不引起操作系统级别的分页),以便尽可能多的工作在内存中.终止执行。

.过期:默认情况下(即使用innodb_only缓存策略),总是返回InnoDB表中最新的数据,因此过期选项没有实际作用。如果将缓存策略更改为缓存 或仅缓存,则过期选项照常工作,但是如果在从内存缓存过期之前在基础表中更新了请求的数据,则请求的数据可能会过期。

.命名空间:memcached就像一个大目录,您可以为文件提供带有前缀和后缀的详细名称,以防止文件发生冲突。daemon_memcached插件允许对键 使用类似的命名约定,但增加了一点。Key名称格式为@@table_id.key.table_id被解码为引用一个特定的表,使用来自 innodb_memcache.containers表的映射数据。在指定的表中查找或写入键。

@@符号只适用于get、add和set函数的单独调用,而不适用于诸如incr或delete之类的其他调用。要为会话中的后续memcached操作指定一个默认 表,可以使用带table_id的@@符号执行get请求,但不带key部分。例如:

get @@table_id

后续的get、set、incr、delete等操作将使用innodb_memcache.containers.name列中table_id指定的表。

.哈希和分布: 默认配置使用innodb_only缓存策略,适合传统的部署配置,即所有数据都在所有服务器上可用,例如一组复制从服务器。

如果像在分片配置中那样物理地划分数据,就可以在运行daemon_memcached插件的多台机器上划分数据,并使用传统的memcached散列机制将请 求路由到特定的机器上。在MySQL端,通常通过add请求向memcached插入所有数据,以便将适当的值存储在适当的服务器上的数据库中。

.内存使用:默认情况下(在innodb_only缓存策略下),memcached协议在InnoDB表之间来回传递信息,InnoDB缓冲池处理内存查找,而不是 memcached内存使用的增长和收缩。memcached端使用的内存相对较少。

如果将缓存策略切换为缓存或仅缓存,则适用memcached内存使用的常规规则。用于memcached数据值的内存是按“slab”分配的。您可以控制 slab大小和用于memcached的最大内存。无论采用哪种方式,都可以使用熟悉的统计系统(例如,通过telnet会话通过标准协议访问)监视daemon_memcached插件并对其进行故障排除。额 外的实用程序不包含在daemon_memcached插件中。您可以使用memcached-tool脚本来安装完整的memcached发行版。

线程使用:MySQL线程和memcached线程共存于同一服务器上。操作系统对线程施加的限制适用于线程总数。

日志使用:由于memcached守护进程与MySQL服务器一起运行并写入stderr,因此用于记录日志的-v、-vv和-vvv选项将输出写入MySQL错误日志。

memcached操作:熟悉的memcached操作,如get、set、add和delete都是可用的。序列化(即表示复杂数据结构的确切字符串格式)取决于语言接口 。

使用memcached作为MySQL前端:这是InnoDB memcached插件的主要目的。集成的memcached守护进程提高了应用程序的性能,并且让InnoDB处理内 存和磁盘之间的数据传输简化了应用程序的逻辑。

工具:MySQL服务器包括libmemcached库,但不包括其他命令行实用程序。要使用memcp、memcat和memcapable等命令,请安装完整的memcached发 行版。当memm和memflush从缓存中删除项时,这些项也会从底层InnoDB表中删除。

编程接口:可以使用所有支持的语言(C和c++、Java、Perl、Python、PHP和Ruby),通过daemon_memcached插件访问MySQL服务器。与传统的 memcached服务器一样指定服务器主机名和端口。默认情况下,daemon_memcached插件在端口11211上监听。可以同时使用文本和二进制协议。您 可以在运行时自定义memcached函数的行为。序列化(即表示复杂数据结构的确切字符串格式)取决于语言接口。

常见问题:MySQL为传统的memcached提供了广泛的常见问题解答。常见问题解答是最适用的,除了使用InnoDB表作为memcached数据的存储介质意 味着您可以将memcached用于比以前更写密集型的应用程序,而不是作为只读缓存。

设置InnoDB memcached插件
下面描述如何在MySQL服务器上设置daemon_memcached插件。因为memcached守护进程与MySQL服务器紧密集成,以避免网络流量并最小化延迟, 所以您可以在使用此特性的每个MySQL实例上执行此过程。

先决条件
.daemon_memcached插件仅支持Linux、Solaris和OS X平台。不支持其他操作系统。

.当从源代码构建MySQL时,您必须使用-DWITH_INNODB_MEMCACHED=ON进行构建。这个构建选项在MySQL插件目录(plugin_dir)中生成两个共享库 ,用于运行daemon_memcached插件:
.libmemcached.so:MySQL的memcached守护进程插件。

.innodb_engine.so:memcached的一个InnoDB API插件。

.Libevent必须安装。
.如果您没有从源代码构建MySQL,则libevent库不会包含在您的安装中。请按照操作系统的安装方法安装libevent 1.4.12及以上版本。例如, 根据不同的操作系统,你可能会使用apt-get、yum或port install。例如,在Ubuntu Linux中,使用:

sudo apt-get install libevent-dev

.如果您从源代码版本安装MySQL,则libevent 1.4.12与软件包捆绑在一起,位于MySQL源代码目录的顶层。如果您使用的是捆绑版本的 libevent,则无需执行任何操作。如果您想使用本地系统版本的libevent,则必须将-DWITH_LIBEVENT build选项设置为system或yes来构建 MySQL。

安装和配置InnoDB memcached插件
1.运行位于MYSQL_HOME/share中的innodb_memcached_config.sql配置脚本配置daemon_memcached插件,使其可以与InnoDB表交互。这个脚本安 装了innodb_memcache数据库,包含三个必需的表(cache_policies, config_options和containers)。它还将demo_test样例表安装到test数据库 中。

mysql> source /mysqlsoft/mysql/share/innodb_memcached_config.sql
Query OK, 1 row affected (0.01 sec)

Database changed
Query OK, 0 rows affected (0.08 sec)

Query OK, 0 rows affected (0.09 sec)

Query OK, 0 rows affected (0.09 sec)

Query OK, 1 row affected (0.02 sec)

Query OK, 1 row affected (0.01 sec)

Query OK, 1 row affected (0.03 sec)

Query OK, 1 row affected (0.01 sec)

Query OK, 1 row affected, 1 warning (0.04 sec)

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
Query OK, 0 rows affected (0.07 sec)

Query OK, 1 row affected (0.03 sec)

执行innodb_memcached_config.sql脚本是一次性操作。如果以后卸载并重新安装daemon_memcached插件,这些表将保留在原来的位置。

mysql> use innodb_memcache
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------------+
| Tables_in_innodb_memcache |
+---------------------------+
| cache_policies            |
| config_options            |
| containers                |
+---------------------------+
3 rows in set (0.00 sec)


mysql> use test
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| demo_test      |
+----------------+
1 row in set (0.00 sec)

在这些表中,innodb_memcache.containers表是最重要的。containers表中的条目提供了到InnoDB表列的映射。daemon_memcached插件使用的每 个InnoDB表都需要在containers表中添加一个条目。

innodb_memcached_config.sql脚本在容器表中插入单个条目,该条目为demo_test表提供映射。它还将一行数据插入demo_test表中。该数据允 许您在安装完成后立即验证安装。

mysql> select * from innodb_memcache.containers\G;
*************************** 1. row ***************************
                  name: aaa
             db_schema: test
              db_table: demo_test
           key_columns: c1
         value_columns: c2
                 flags: c3
            cas_column: c4
    expire_time_column: c5
unique_idx_name_on_key: PRIMARY
1 row in set (0.00 sec)

ERROR:
No query specified

mysql> select * from test.demo_test;
+----+--------------+------+------+------+
| c1 | c2           | c3   | c4   | c5   |
+----+--------------+------+------+------+
| AA | HELLO, HELLO |    8 |    0 |    0 |
+----+--------------+------+------+------+
1 row in set (0.00 sec)



mysql> INSTALL PLUGIN daemon_memcached soname "libmemcached.so";
Query OK, 0 rows affected (0.18 sec)

一旦安装了这个插件,每次MySQL服务器重新启动时,它就会自动激活。

验证InnoDB和memcached的安装
要验证daemon_memcached插件设置,请使用telnet会话发出memcached命令。默认情况下,memcached守护进程监听端口11211。

[root@localhost /]# netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      998/mysqld
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1630/sshd
tcp6       0      0 :::3306                 :::*                    LISTEN      998/mysqld
tcp6       0      0 :::11211                :::*                    LISTEN      998/mysqld
tcp6       0      0 :::22                   :::*                    LISTEN      1630/sshd

1.从test.demo_test表中检索数据。demo_test表中的单行数据的键值为AA。

mysql> select * from test.demo_test;
+----+--------------+------+------+------+
| c1 | c2           | c3   | c4   | c5   |
+----+--------------+------+------+------+
| AA | HELLO, HELLO |    8 |    0 |    0 |
+----+--------------+------+------+------+
1 row in set (0.00 sec)


[root@localhost /]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
get AA
VALUE AA 8 12
HELLO, HELLO
END

2.使用set命令插入数据。

set BB 10 0 16
GOODBYE, GOODBYE
STORED

说明:
.set命令用来存储值

.BB 是键

.10是操作标志;被memcached忽略,但可以被客户端用来表示任何类型的信息;如果未使用,则指定0

.0为过期时间(TTL);如果未使用,则指定0

.16是所提供值块的长度,以字节为单位

.GOODBYE, GOODBYE是存储的值

3.通过连接MySQL服务器,查询test.demo_test表,验证插入的数据是否存储在MySQL中。

mysql> select * from test.demo_test;
+----+------------------+------+------+------+
| c1 | c2               | c3   | c4   | c5   |
+----+------------------+------+------+------+
| AA | HELLO, HELLO     |    8 |    0 |    0 |
| BB | GOODBYE, GOODBYE |   10 |    1 |    0 |
+----+------------------+------+------+------+
2 rows in set (0.00 sec)

4.返回到telnet会话并检索您先前使用BB键插入的数据。

get BB
VALUE BB 10 16
GOODBYE, GOODBYE
END

如果关闭MySQL服务器,同时也关闭了集成的memcached服务器,那么进一步访问memcached数据的尝试将会失败,并出现连接错误。通常, memcached数据在此时也会消失,当memcached重启时,需要应用程序逻辑将数据加载回内存。但是,InnoDB memcached插件会自动完成这个过
程。

重新启动MySQL时,get操作再次返回存储在早期memcached会话中的键/值对。当一个键被请求并且相关的值不在内存缓存中时,该值将自动从 MySQL test.demo_test表中查询。

创建新的表和列映射
这个例子展示了如何使用daemon_memcached插件设置自己的InnoDB表。
1.创建一个InnoDB表。表必须有一个具有唯一索引的键列。city表的键列是city_id,它被定义为主键。该表还必须包括用于标记、cas和过期值 的列。可能有一个或多个值列。城市表有三个值列(名称、州、国家)。

mysql> create table test.city (
    -> city_id varchar(32),
    -> name varchar(1024),
    -> state varchar(1024),
    -> country varchar(1024),
    -> flags int,
    -> cas bigint unsigned,
    -> expiry int,
    -> primary key(city_id)
    -> ) engine=innodb;
Query OK, 0 rows affected (0.08 sec)

2.在innodb_memcache中添加一个表项。以便daemon_memcached插件知道如何访问InnoDB表。该表项必须满足innodb_memcache.containers表定义。

mysql> desc innodb_memcache.containers;
+------------------------+--------------+------+-----+---------+-------+
| Field                  | Type         | Null | Key | Default | Extra |
+------------------------+--------------+------+-----+---------+-------+
| name                   | varchar(50)  | NO   | PRI | NULL    |       |
| db_schema              | varchar(250) | NO   |     | NULL    |       |
| db_table               | varchar(250) | NO   |     | NULL    |       |
| key_columns            | varchar(250) | NO   |     | NULL    |       |
| value_columns          | varchar(250) | YES  |     | NULL    |       |
| flags                  | varchar(250) | NO   |     | 0       |       |
| cas_column             | varchar(250) | YES  |     | NULL    |       |
| expire_time_column     | varchar(250) | YES  |     | NULL    |       |
| unique_idx_name_on_key | varchar(250) | NO   |     | NULL    |       |
+------------------------+--------------+------+-----+---------+-------+
9 rows in set (0.00 sec)

city表的innodb_memcache.containers表项定义为:

mysql> insert into innodb_memcache.containers (
    -> name, db_schema, db_table, key_columns, value_columns,
    -> flags, cas_column, expire_time_column, unique_idx_name_on_key)
    -> values ('default', 'test', 'city', 'city_id', 'name|state|country',
    -> 'flags','cas','expiry','primary');
Query OK, 1 row affected (0.04 sec)

.default指定给containers.name列以将ctiy表配置为默认值,InnoDB表与daemon_memcached插件一起使用。

.多个InnoDB表列(name, state, country)被映射containers.value_columns使用” | “分隔符。

.innodb_memcache.containers的flags、cas_column和expire_time_column字段在使用daemon_memcached插件的应用程序中通常不重要。但是, 每个表都需要一个指定的InnoDB表列。在插入数据时,如果这些列未使用,则将它们指定为0。

3.更新innodb_memcache.containers表后,重新启动daemon_memcache插件以应用更改。

mysql> UNINSTALL PLUGIN daemon_memcached;
Query OK, 0 rows affected (2.01 sec)

mysql> INSTALL PLUGIN daemon_memcached soname "libmemcached.so";
Query OK, 0 rows affected (0.10 sec)

4.通过telnet,使用memcached set命令向city表插入数据。

[root@localhost ~]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
set B 0 0 22
BANGALORE|BANGALORE|IN
STORED

5.使用MySQL查询test.city表,以验证插入的数据是否已存储。

mysql> select * from test.city;
+---------+-----------+-----------+---------+-------+------+--------+
| city_id | name      | state     | country | flags | cas  | expiry |
+---------+-----------+-----------+---------+-------+------+--------+
| B       | BANGALORE | BANGALORE | IN      |     0 |    2 |      0 |
+---------+-----------+-----------+---------+-------+------+--------+
1 row in set (0.00 sec)

6.使用MySQL,向test.city表插入额外的数据。

mysql> insert into city values ('c','chennai','tamil nadu','in', 0, 0 ,0);
Query OK, 1 row affected (0.02 sec)

mysql> insert into city values ('d','delhi','delhi','in', 0, 0, 0);
Query OK, 1 row affected (0.00 sec)

mysql> insert into city values ('h','hyderabad','telangana','in', 0, 0, 0);

Query OK, 1 row affected (0.05 sec)

mysql> insert into city values ('m','mumbai','maharashtra','in', 0, 0, 0);
Query OK, 1 row affected (0.02 sec)

7.使用telnet,发出memcached get命令来检索使用MySQL插入的数据。

get H
VALUE H 0 22
hyderabad|telangana|in
END
get C
VALUE C 0 21
chennai|tamil nadu|in
END

MySQL InnoDB和MySQL复制

InnoDB和MySQL复制
MySQL复制适用于InnoDB表和MyISAM表。当从节点上的存储引擎与主节点上的原始存储引擎不同时,也可以使用复制。例如,用户可以将对主节点上的InnoDB表的修改复制到从节点上的MyISAM表。

在主服务器上失败的事务完全不会影响复制。MySQL复制基于二进制日志,MySQL在其中写入修改数据的SQL语句。一个失败的事务(例如,因为违反了外键,或者因为回滚)不会被写入二进制日志,因此它不会被发送到从服务器。

复制和级联
只有当共享外键关系的表同时在主从上使用InnoDB时,主上InnoDB表的级联操作才会在从上复制。无论使用基于语句的复制还是基于行的复制,都是如此。假设已经启动了复制,然后使用下面的create TABLE语句在master上创建了两个表:

CREATE TABLE fc1 (
i INT PRIMARY KEY,
j INT
) ENGINE = InnoDB;

CREATE TABLE fc2 (
m INT PRIMARY KEY,
n INT,
FOREIGN KEY ni (n) REFERENCES fc1 (i)
ON DELETE CASCADE
) ENGINE = InnoDB;

假设从服务器没有启用InnoDB支持。如果是这种情况,那么从节点上的表会被创建,但是它们使用MyISAM存储引擎,并且外键选项会被忽略。现在我们向master上的表中插入一些行:

master> INSERT INTO fc1 VALUES (1, 1), (2, 2);
Query OK, 2 rows affected (0.09 sec)
Records: 2 Duplicates: 0 Warnings: 0
master> INSERT INTO fc2 VALUES (1, 1), (2, 2), (3, 1);
Query OK, 3 rows affected (0.19 sec)
Records: 3 Duplicates: 0 Warnings: 0

此时,在主节点和从节点上,表fc1包含2行,表fc2包含3行,如下所示:

master> SELECT * FROM fc1;
+---+------+
| i | j |
+---+------+
| 1 | 1 |
| 2 | 2 |
+---+------+
2 rows in set (0.00 sec)
master> SELECT * FROM fc2;
+---+------+
| m | n |
+---+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 1 |
+---+------+
3 rows in set (0.00 sec)
slave> SELECT * FROM fc1;
+---+------+
| i | j |
+---+------+
| 1 | 1 |
| 2 | 2 |
+---+------+
2 rows in set (0.00 sec)
slave> SELECT * FROM fc2;
+---+------+
| m | n |
+---+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 1 |
+---+------+
3 rows in set (0.00 sec)

现在假设你在主服务器上执行了下面的DELETE语句:

master> DELETE FROM fc1 WHERE i=1;
Query OK, 1 row affected (0.09 sec)

由于级联,主服务器表fc2现在只包含1行:

master> SELECT * FROM fc2;
+---+---+
| m | n |
+---+---+
| 2 | 2 |
+---+---+
1 row in set (0.00 sec)

但是,级联不会传播到从节点上,因为从节点上对fc1的DELETE不会从fc2中删除任何行。从节点的fc2副本仍然包含原来插入的所有行:

slave> SELECT * FROM fc2;
+---+---+
| m | n |
+---+---+
| 1 | 1 |
| 3 | 1 |
| 2 | 2 |
+---+---+
3 rows in set (0.00 sec)

这种差异是由于级联删除是由InnoDB存储引擎在内部处理的,这意味着没有任何更改被记录下来。

Linux 使用源码安装mysqlfrm

由于mysqlfrm是mysql-utilities工具一部分,那么我们安装mysql-utilities即可,下载好对应的源码包,进行编译安装
1、mysqlfrm安装

[root@localhost soft]# tar -xvzf mysql-utilities-1.6.5.tar.gz
mysql-utilities-1.6.5/
mysql-utilities-1.6.5/PKG-INFO
mysql-utilities-1.6.5/README.txt
mysql-utilities-1.6.5/mysql/
mysql-utilities-1.6.5/mysql/utilities/
mysql-utilities-1.6.5/mysql/utilities/common/
mysql-utilities-1.6.5/mysql/utilities/common/pattern_matching.py
mysql-utilities-1.6.5/mysql/utilities/common/server.py
mysql-utilities-1.6.5/mysql/utilities/common/user.py
mysql-utilities-1.6.5/mysql/utilities/common/variables.py
mysql-utilities-1.6.5/mysql/utilities/common/ip_parser.py
mysql-utilities-1.6.5/mysql/utilities/common/replication_ms.py
mysql-utilities-1.6.5/mysql/utilities/common/audit_log_parser.py
mysql-utilities-1.6.5/mysql/utilities/common/__init__.py
mysql-utilities-1.6.5/mysql/utilities/common/lock.py
mysql-utilities-1.6.5/mysql/utilities/common/tools.py
mysql-utilities-1.6.5/mysql/utilities/common/topology.py
mysql-utilities-1.6.5/mysql/utilities/common/table.py
mysql-utilities-1.6.5/mysql/utilities/common/charsets.py
mysql-utilities-1.6.5/mysql/utilities/common/parser.py
mysql-utilities-1.6.5/mysql/utilities/common/messages.py
mysql-utilities-1.6.5/mysql/utilities/common/gtid.py
mysql-utilities-1.6.5/mysql/utilities/common/audit_log_reader.py
mysql-utilities-1.6.5/mysql/utilities/common/database.py
mysql-utilities-1.6.5/mysql/utilities/common/grants_info.py
mysql-utilities-1.6.5/mysql/utilities/common/options.py
mysql-utilities-1.6.5/mysql/utilities/common/my_print_defaults.py
mysql-utilities-1.6.5/mysql/utilities/common/utilities.py
mysql-utilities-1.6.5/mysql/utilities/common/options_parser.py
mysql-utilities-1.6.5/mysql/utilities/common/binary_log_file.py
mysql-utilities-1.6.5/mysql/utilities/common/daemon.py
mysql-utilities-1.6.5/mysql/utilities/common/binlog.py
mysql-utilities-1.6.5/mysql/utilities/common/frm_reader.py
mysql-utilities-1.6.5/mysql/utilities/common/sql_transform.py
mysql-utilities-1.6.5/mysql/utilities/common/dbcompare.py
mysql-utilities-1.6.5/mysql/utilities/common/console.py
mysql-utilities-1.6.5/mysql/utilities/common/topology_map.py
mysql-utilities-1.6.5/mysql/utilities/common/format.py
mysql-utilities-1.6.5/mysql/utilities/common/rpl_sync.py
mysql-utilities-1.6.5/mysql/utilities/common/replication.py
mysql-utilities-1.6.5/mysql/utilities/__init__.py
mysql-utilities-1.6.5/mysql/utilities/command/
mysql-utilities-1.6.5/mysql/utilities/command/dbexport.py
mysql-utilities-1.6.5/mysql/utilities/command/rpl_admin.py
mysql-utilities-1.6.5/mysql/utilities/command/__init__.py
mysql-utilities-1.6.5/mysql/utilities/command/userclone.py
mysql-utilities-1.6.5/mysql/utilities/command/binlog_admin.py
mysql-utilities-1.6.5/mysql/utilities/command/serverclone.py
mysql-utilities-1.6.5/mysql/utilities/command/grep.py
mysql-utilities-1.6.5/mysql/utilities/command/indexcheck.py
mysql-utilities-1.6.5/mysql/utilities/command/grants.py
mysql-utilities-1.6.5/mysql/utilities/command/check_rpl.py
mysql-utilities-1.6.5/mysql/utilities/command/setup_rpl.py
mysql-utilities-1.6.5/mysql/utilities/command/dbimport.py
mysql-utilities-1.6.5/mysql/utilities/command/failover_console.py
mysql-utilities-1.6.5/mysql/utilities/command/dbcopy.py
mysql-utilities-1.6.5/mysql/utilities/command/proc.py
mysql-utilities-1.6.5/mysql/utilities/command/rpl_sync_check.py
mysql-utilities-1.6.5/mysql/utilities/command/serverinfo.py
mysql-utilities-1.6.5/mysql/utilities/command/failover_daemon.py
mysql-utilities-1.6.5/mysql/utilities/command/dbcompare.py
mysql-utilities-1.6.5/mysql/utilities/command/read_frm.py
mysql-utilities-1.6.5/mysql/utilities/command/diskusage.py
mysql-utilities-1.6.5/mysql/utilities/command/utilitiesconsole.py
mysql-utilities-1.6.5/mysql/utilities/command/audit_log.py
mysql-utilities-1.6.5/mysql/utilities/command/diff.py
mysql-utilities-1.6.5/mysql/utilities/command/show_rpl.py
mysql-utilities-1.6.5/mysql/utilities/exception.py
mysql-utilities-1.6.5/mysql/__init__.py
mysql-utilities-1.6.5/mysql/connector/
mysql-utilities-1.6.5/mysql/connector/custom_types.py
mysql-utilities-1.6.5/mysql/connector/__init__.py
mysql-utilities-1.6.5/mysql/connector/charsets.py
mysql-utilities-1.6.5/mysql/connector/errors.py
mysql-utilities-1.6.5/mysql/connector/cursor_cext.py
mysql-utilities-1.6.5/mysql/connector/abstracts.py
mysql-utilities-1.6.5/mysql/connector/utils.py
mysql-utilities-1.6.5/mysql/connector/constants.py
mysql-utilities-1.6.5/mysql/connector/django/
mysql-utilities-1.6.5/mysql/connector/django/introspection.py
mysql-utilities-1.6.5/mysql/connector/django/validation.py
mysql-utilities-1.6.5/mysql/connector/django/__init__.py
mysql-utilities-1.6.5/mysql/connector/django/schema.py
mysql-utilities-1.6.5/mysql/connector/django/client.py
mysql-utilities-1.6.5/mysql/connector/django/operations.py
mysql-utilities-1.6.5/mysql/connector/django/compiler.py
mysql-utilities-1.6.5/mysql/connector/django/features.py
mysql-utilities-1.6.5/mysql/connector/django/creation.py
mysql-utilities-1.6.5/mysql/connector/django/base.py
mysql-utilities-1.6.5/mysql/connector/fabric/
mysql-utilities-1.6.5/mysql/connector/fabric/__init__.py
mysql-utilities-1.6.5/mysql/connector/fabric/caching.py
mysql-utilities-1.6.5/mysql/connector/fabric/connection.py
mysql-utilities-1.6.5/mysql/connector/fabric/balancing.py
mysql-utilities-1.6.5/mysql/connector/dbapi.py
mysql-utilities-1.6.5/mysql/connector/pooling.py
mysql-utilities-1.6.5/mysql/connector/network.py
mysql-utilities-1.6.5/mysql/connector/conversion.py
mysql-utilities-1.6.5/mysql/connector/connection.py
mysql-utilities-1.6.5/mysql/connector/version.py
mysql-utilities-1.6.5/mysql/connector/connection_cext.py
mysql-utilities-1.6.5/mysql/connector/cursor.py
mysql-utilities-1.6.5/mysql/connector/optionfiles.py
mysql-utilities-1.6.5/mysql/connector/authentication.py
mysql-utilities-1.6.5/mysql/connector/catch23.py
mysql-utilities-1.6.5/mysql/connector/locales/
mysql-utilities-1.6.5/mysql/connector/locales/eng/
mysql-utilities-1.6.5/mysql/connector/locales/eng/__init__.py
mysql-utilities-1.6.5/mysql/connector/locales/eng/client_error.py
mysql-utilities-1.6.5/mysql/connector/locales/__init__.py
mysql-utilities-1.6.5/mysql/connector/protocol.py
mysql-utilities-1.6.5/mysql/connector/errorcode.py
mysql-utilities-1.6.5/unit_tests/
mysql-utilities-1.6.5/unit_tests/__init__.py
mysql-utilities-1.6.5/unit_tests/test_decode_encode.py
mysql-utilities-1.6.5/unit_tests/test_binary_log_file.py
mysql-utilities-1.6.5/unit_tests/test_utilities_console.py
mysql-utilities-1.6.5/unit_tests/test_server_version.py
mysql-utilities-1.6.5/unit_tests/test_parsers.py
mysql-utilities-1.6.5/unit_tests/test_options.py
mysql-utilities-1.6.5/unit_tests/test_ip_parser.py
mysql-utilities-1.6.5/unit_tests/test_user_privileges.py
mysql-utilities-1.6.5/unit_tests/test_missing_connector.py
mysql-utilities-1.6.5/unit_tests/test_my_print_defaults.py
mysql-utilities-1.6.5/unit_tests/test_gtid.py
mysql-utilities-1.6.5/docs/
mysql-utilities-1.6.5/docs/man/
mysql-utilities-1.6.5/docs/man/mysqlrplcheck.1
mysql-utilities-1.6.5/docs/man/mysqlmetagrep.1
mysql-utilities-1.6.5/docs/man/mysqlfailover.1
mysql-utilities-1.6.5/docs/man/mysqlserverclone.1
mysql-utilities-1.6.5/docs/man/mysqlbinlogmove.1
mysql-utilities-1.6.5/docs/man/mysqlrplms.1
mysql-utilities-1.6.5/docs/man/mysqldbimport.1
mysql-utilities-1.6.5/docs/man/mysqldiskusage.1
mysql-utilities-1.6.5/docs/man/mysqlreplicate.1
mysql-utilities-1.6.5/docs/man/mysqldbexport.1
mysql-utilities-1.6.5/docs/man/mysqlfrm.1
mysql-utilities-1.6.5/docs/man/mysqlauditgrep.1
mysql-utilities-1.6.5/docs/man/mysqluc.1
mysql-utilities-1.6.5/docs/man/mysqldiff.1
mysql-utilities-1.6.5/docs/man/mysqlslavetrx.1
mysql-utilities-1.6.5/docs/man/mysqlbinlogpurge.1
mysql-utilities-1.6.5/docs/man/mysqlgrants.1
mysql-utilities-1.6.5/docs/man/mysqldbcopy.1
mysql-utilities-1.6.5/docs/man/mysqlrpladmin.1
mysql-utilities-1.6.5/docs/man/mysqlprocgrep.1
mysql-utilities-1.6.5/docs/man/mysqlauditadmin.1
mysql-utilities-1.6.5/docs/man/mysqlindexcheck.1
mysql-utilities-1.6.5/docs/man/mysqldbcompare.1
mysql-utilities-1.6.5/docs/man/mysqlrplsync.1
mysql-utilities-1.6.5/docs/man/mysqlserverinfo.1
mysql-utilities-1.6.5/docs/man/mysqlbinlogrotate.1
mysql-utilities-1.6.5/docs/man/mysqlrplshow.1
mysql-utilities-1.6.5/docs/man/mysqluserclone.1
mysql-utilities-1.6.5/CHANGES.txt
mysql-utilities-1.6.5/scripts/
mysql-utilities-1.6.5/scripts/mysqlrplms.py
mysql-utilities-1.6.5/scripts/mysqldbcompare.py
mysql-utilities-1.6.5/scripts/mysqlserverclone.py
mysql-utilities-1.6.5/scripts/mysqluc.py
mysql-utilities-1.6.5/scripts/mysqldiskusage.py
mysql-utilities-1.6.5/scripts/mysqlauditadmin.py
mysql-utilities-1.6.5/scripts/mysqluserclone.py
mysql-utilities-1.6.5/scripts/mysqlbinlogrotate.py
mysql-utilities-1.6.5/scripts/mysqlreplicate.py
mysql-utilities-1.6.5/scripts/mysqlfailover.py
mysql-utilities-1.6.5/scripts/mysqlbinlogmove.py
mysql-utilities-1.6.5/scripts/mysqlindexcheck.py
mysql-utilities-1.6.5/scripts/mysqldbexport.py
mysql-utilities-1.6.5/scripts/mysqlrplcheck.py
mysql-utilities-1.6.5/scripts/mysqlslavetrx.py
mysql-utilities-1.6.5/scripts/mysqlmetagrep.py
mysql-utilities-1.6.5/scripts/mysqlprocgrep.py
mysql-utilities-1.6.5/scripts/mysqlrplsync.py
mysql-utilities-1.6.5/scripts/mysqlbinlogpurge.py
mysql-utilities-1.6.5/scripts/mysqldiff.py
mysql-utilities-1.6.5/scripts/mysqlrplshow.py
mysql-utilities-1.6.5/scripts/mysqlfrm.py
mysql-utilities-1.6.5/scripts/mysqldbimport.py
mysql-utilities-1.6.5/scripts/mysqlauditgrep.py
mysql-utilities-1.6.5/scripts/mysqlgrants.py
mysql-utilities-1.6.5/scripts/mysqldbcopy.py
mysql-utilities-1.6.5/scripts/mysqlserverinfo.py
mysql-utilities-1.6.5/scripts/mysqlrpladmin.py
mysql-utilities-1.6.5/info.py
mysql-utilities-1.6.5/setup.py
mysql-utilities-1.6.5/LICENSE.txt
[root@localhost soft]# cd mysql-utilities-1.6.5/
[root@localhost mysql-utilities-1.6.5]# ll
total 132
-rw-r--r--. 1 7161 31415 37814 Jan 18  2017 CHANGES.txt
drwxr-xr-x. 3 7161 31415    16 Jan 18  2017 docs
-rw-r--r--. 1 7161 31415  6680 Jan 18  2017 info.py
-rw-r--r--. 1 7161 31415 17987 Jan 18  2017 LICENSE.txt
drwxr-xr-x. 4 7161 31415    56 Jan 18  2017 mysql
-rw-r--r--. 1 7161 31415   928 Jan 18  2017 PKG-INFO
-rw-r--r--. 1 7161 31415 34819 Jan 18  2017 README.txt
drwxr-xr-x. 2 7161 31415  4096 Jan 18  2017 scripts
-rw-r--r--. 1 7161 31415 14232 Jan 18  2017 setup.py
drwxr-xr-x. 2 7161 31415  4096 Jan 18  2017 unit_tests
[root@localhost mysql-utilities-1.6.5]# python ./setup.py build
checking mysql for packages to distribute
packages found: ['mysql', 'mysql.connector', 'mysql.connector.django', 'mysql.connector.fabric', 'mysql.connector.locales', 'mysql.connector.locales.eng', 'mysql.utilities', 'mysql.utilities.command', 'mysql.utilities.common']
scripts found: ['scripts/mysqlrplms.py', 'scripts/mysqldbcompare.py', 'scripts/mysqlserverclone.py', 'scripts/mysqluc.py', 'scripts/mysqldiskusage.py', 'scripts/mysqlauditadmin.py', 'scripts/mysqluserclone.py', 'scripts/mysqlbinlogrotate.py', 'scripts/mysqlreplicate.py', 'scripts/mysqlfailover.py', 'scripts/mysqlbinlogmove.py', 'scripts/mysqlindexcheck.py', 'scripts/mysqldbexport.py', 'scripts/mysqlrplcheck.py', 'scripts/mysqlslavetrx.py', 'scripts/mysqlmetagrep.py', 'scripts/mysqlprocgrep.py', 'scripts/mysqlrplsync.py', 'scripts/mysqlbinlogpurge.py', 'scripts/mysqldiff.py', 'scripts/mysqlrplshow.py', 'scripts/mysqlfrm.py', 'scripts/mysqldbimport.py', 'scripts/mysqlauditgrep.py', 'scripts/mysqlgrants.py', 'scripts/mysqldbcopy.py', 'scripts/mysqlserverinfo.py', 'scripts/mysqlrpladmin.py']
package set set(['mysql.utilities.command', 'mysql.utilities.common', 'mysql.connector.fabric', 'mysql.connector.locales', 'mysql.connector', 'mysql.utilities', 'mysql.connector.django', 'mysql', 'mysql.connector.locales.eng'])
running build
running build_py
creating build
creating build/lib
creating build/lib/mysql
creating build/lib/mysql/utilities
creating build/lib/mysql/utilities/command
copying mysql/utilities/command/dbexport.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/rpl_admin.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/__init__.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/userclone.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/binlog_admin.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/serverclone.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/grep.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/indexcheck.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/grants.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/check_rpl.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/setup_rpl.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/dbimport.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/failover_console.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/dbcopy.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/proc.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/rpl_sync_check.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/serverinfo.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/failover_daemon.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/dbcompare.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/read_frm.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/diskusage.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/utilitiesconsole.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/audit_log.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/diff.py -> build/lib/mysql/utilities/command
copying mysql/utilities/command/show_rpl.py -> build/lib/mysql/utilities/command
creating build/lib/mysql/utilities/common
copying mysql/utilities/common/pattern_matching.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/server.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/user.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/variables.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/ip_parser.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/replication_ms.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/audit_log_parser.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/__init__.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/lock.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/tools.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/topology.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/table.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/charsets.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/parser.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/messages.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/gtid.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/audit_log_reader.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/database.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/grants_info.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/options.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/my_print_defaults.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/utilities.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/options_parser.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/binary_log_file.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/daemon.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/binlog.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/frm_reader.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/sql_transform.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/dbcompare.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/console.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/topology_map.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/format.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/rpl_sync.py -> build/lib/mysql/utilities/common
copying mysql/utilities/common/replication.py -> build/lib/mysql/utilities/common
creating build/lib/mysql/connector
creating build/lib/mysql/connector/fabric
copying mysql/connector/fabric/__init__.py -> build/lib/mysql/connector/fabric
copying mysql/connector/fabric/caching.py -> build/lib/mysql/connector/fabric
copying mysql/connector/fabric/connection.py -> build/lib/mysql/connector/fabric
copying mysql/connector/fabric/balancing.py -> build/lib/mysql/connector/fabric
creating build/lib/mysql/connector/locales
copying mysql/connector/locales/__init__.py -> build/lib/mysql/connector/locales
copying mysql/connector/custom_types.py -> build/lib/mysql/connector
copying mysql/connector/__init__.py -> build/lib/mysql/connector
copying mysql/connector/charsets.py -> build/lib/mysql/connector
copying mysql/connector/errors.py -> build/lib/mysql/connector
copying mysql/connector/cursor_cext.py -> build/lib/mysql/connector
copying mysql/connector/abstracts.py -> build/lib/mysql/connector
copying mysql/connector/utils.py -> build/lib/mysql/connector
copying mysql/connector/constants.py -> build/lib/mysql/connector
copying mysql/connector/dbapi.py -> build/lib/mysql/connector
copying mysql/connector/pooling.py -> build/lib/mysql/connector
copying mysql/connector/network.py -> build/lib/mysql/connector
copying mysql/connector/conversion.py -> build/lib/mysql/connector
copying mysql/connector/connection.py -> build/lib/mysql/connector
copying mysql/connector/version.py -> build/lib/mysql/connector
copying mysql/connector/connection_cext.py -> build/lib/mysql/connector
copying mysql/connector/cursor.py -> build/lib/mysql/connector
copying mysql/connector/optionfiles.py -> build/lib/mysql/connector
copying mysql/connector/authentication.py -> build/lib/mysql/connector
copying mysql/connector/catch23.py -> build/lib/mysql/connector
copying mysql/connector/protocol.py -> build/lib/mysql/connector
copying mysql/connector/errorcode.py -> build/lib/mysql/connector
copying mysql/utilities/__init__.py -> build/lib/mysql/utilities
copying mysql/utilities/exception.py -> build/lib/mysql/utilities
creating build/lib/mysql/connector/django
copying mysql/connector/django/introspection.py -> build/lib/mysql/connector/django
copying mysql/connector/django/validation.py -> build/lib/mysql/connector/django
copying mysql/connector/django/__init__.py -> build/lib/mysql/connector/django
copying mysql/connector/django/schema.py -> build/lib/mysql/connector/django
copying mysql/connector/django/client.py -> build/lib/mysql/connector/django
copying mysql/connector/django/operations.py -> build/lib/mysql/connector/django
copying mysql/connector/django/compiler.py -> build/lib/mysql/connector/django
copying mysql/connector/django/features.py -> build/lib/mysql/connector/django
copying mysql/connector/django/creation.py -> build/lib/mysql/connector/django
copying mysql/connector/django/base.py -> build/lib/mysql/connector/django
copying mysql/__init__.py -> build/lib/mysql
creating build/lib/mysql/connector/locales/eng
copying mysql/connector/locales/eng/__init__.py -> build/lib/mysql/connector/locales/eng
copying mysql/connector/locales/eng/client_error.py -> build/lib/mysql/connector/locales/eng
running build_scripts
copying scripts/mysqldbimport.py -> scripts/mysqldbimport
copying scripts/mysqlbinlogpurge.py -> scripts/mysqlbinlogpurge
copying scripts/mysqlfrm.py -> scripts/mysqlfrm
copying scripts/mysqlserverclone.py -> scripts/mysqlserverclone
copying scripts/mysqlindexcheck.py -> scripts/mysqlindexcheck
copying scripts/mysqldiff.py -> scripts/mysqldiff
copying scripts/mysqlbinlogrotate.py -> scripts/mysqlbinlogrotate
copying scripts/mysqlrpladmin.py -> scripts/mysqlrpladmin
copying scripts/mysqlgrants.py -> scripts/mysqlgrants
copying scripts/mysqlrplcheck.py -> scripts/mysqlrplcheck
copying scripts/mysqlprocgrep.py -> scripts/mysqlprocgrep
copying scripts/mysqlauditgrep.py -> scripts/mysqlauditgrep
copying scripts/mysqlrplms.py -> scripts/mysqlrplms
copying scripts/mysqlslavetrx.py -> scripts/mysqlslavetrx
copying scripts/mysqlreplicate.py -> scripts/mysqlreplicate
copying scripts/mysqldbexport.py -> scripts/mysqldbexport
copying scripts/mysqlrplshow.py -> scripts/mysqlrplshow
copying scripts/mysqluc.py -> scripts/mysqluc
copying scripts/mysqlserverinfo.py -> scripts/mysqlserverinfo
copying scripts/mysqlauditadmin.py -> scripts/mysqlauditadmin
copying scripts/mysqlrplsync.py -> scripts/mysqlrplsync
copying scripts/mysqldbcompare.py -> scripts/mysqldbcompare
copying scripts/mysqldiskusage.py -> scripts/mysqldiskusage
copying scripts/mysqlfailover.py -> scripts/mysqlfailover
copying scripts/mysqluserclone.py -> scripts/mysqluserclone
copying scripts/mysqlbinlogmove.py -> scripts/mysqlbinlogmove
copying scripts/mysqlmetagrep.py -> scripts/mysqlmetagrep
copying scripts/mysqldbcopy.py -> scripts/mysqldbcopy
creating build/scripts-2.7
copying and adjusting scripts/mysqldbimport -> build/scripts-2.7
copying and adjusting scripts/mysqlbinlogpurge -> build/scripts-2.7
copying and adjusting scripts/mysqlfrm -> build/scripts-2.7
copying and adjusting scripts/mysqlserverclone -> build/scripts-2.7
copying and adjusting scripts/mysqlindexcheck -> build/scripts-2.7
copying and adjusting scripts/mysqldiff -> build/scripts-2.7
copying and adjusting scripts/mysqlbinlogrotate -> build/scripts-2.7
copying and adjusting scripts/mysqlrpladmin -> build/scripts-2.7
copying and adjusting scripts/mysqlgrants -> build/scripts-2.7
copying and adjusting scripts/mysqlrplcheck -> build/scripts-2.7
copying and adjusting scripts/mysqlprocgrep -> build/scripts-2.7
copying and adjusting scripts/mysqlauditgrep -> build/scripts-2.7
copying and adjusting scripts/mysqlrplms -> build/scripts-2.7
copying and adjusting scripts/mysqlslavetrx -> build/scripts-2.7
copying and adjusting scripts/mysqlreplicate -> build/scripts-2.7
copying and adjusting scripts/mysqldbexport -> build/scripts-2.7
copying and adjusting scripts/mysqlrplshow -> build/scripts-2.7
copying and adjusting scripts/mysqluc -> build/scripts-2.7
copying and adjusting scripts/mysqlserverinfo -> build/scripts-2.7
copying and adjusting scripts/mysqlauditadmin -> build/scripts-2.7
copying and adjusting scripts/mysqlrplsync -> build/scripts-2.7
copying and adjusting scripts/mysqldbcompare -> build/scripts-2.7
copying and adjusting scripts/mysqldiskusage -> build/scripts-2.7
copying and adjusting scripts/mysqlfailover -> build/scripts-2.7
copying and adjusting scripts/mysqluserclone -> build/scripts-2.7
copying and adjusting scripts/mysqlbinlogmove -> build/scripts-2.7
copying and adjusting scripts/mysqlmetagrep -> build/scripts-2.7
copying and adjusting scripts/mysqldbcopy -> build/scripts-2.7
changing mode of build/scripts-2.7/mysqldbimport from 644 to 755
changing mode of build/scripts-2.7/mysqlbinlogpurge from 644 to 755
changing mode of build/scripts-2.7/mysqlfrm from 644 to 755
changing mode of build/scripts-2.7/mysqlserverclone from 644 to 755
changing mode of build/scripts-2.7/mysqlindexcheck from 644 to 755
changing mode of build/scripts-2.7/mysqldiff from 644 to 755
changing mode of build/scripts-2.7/mysqlbinlogrotate from 644 to 755
changing mode of build/scripts-2.7/mysqlrpladmin from 644 to 755
changing mode of build/scripts-2.7/mysqlgrants from 644 to 755
changing mode of build/scripts-2.7/mysqlrplcheck from 644 to 755
changing mode of build/scripts-2.7/mysqlprocgrep from 644 to 755
changing mode of build/scripts-2.7/mysqlauditgrep from 644 to 755
changing mode of build/scripts-2.7/mysqlrplms from 644 to 755
changing mode of build/scripts-2.7/mysqlslavetrx from 644 to 755
changing mode of build/scripts-2.7/mysqlreplicate from 644 to 755
changing mode of build/scripts-2.7/mysqldbexport from 644 to 755
changing mode of build/scripts-2.7/mysqlrplshow from 644 to 755
changing mode of build/scripts-2.7/mysqluc from 644 to 755
changing mode of build/scripts-2.7/mysqlserverinfo from 644 to 755
changing mode of build/scripts-2.7/mysqlauditadmin from 644 to 755
changing mode of build/scripts-2.7/mysqlrplsync from 644 to 755
changing mode of build/scripts-2.7/mysqldbcompare from 644 to 755
changing mode of build/scripts-2.7/mysqldiskusage from 644 to 755
changing mode of build/scripts-2.7/mysqlfailover from 644 to 755
changing mode of build/scripts-2.7/mysqluserclone from 644 to 755
changing mode of build/scripts-2.7/mysqlbinlogmove from 644 to 755
changing mode of build/scripts-2.7/mysqlmetagrep from 644 to 755
changing mode of build/scripts-2.7/mysqldbcopy from 644 to 755
[root@localhost mysql-utilities-1.6.5]# python ./setup.py install
checking mysql for packages to distribute
packages found: ['mysql', 'mysql.connector', 'mysql.connector.django', 'mysql.connector.fabric', 'mysql.connector.locales', 'mysql.connector.locales.eng', 'mysql.utilities', 'mysql.utilities.command', 'mysql.utilities.common']
scripts found: ['scripts/mysqlrplms.py', 'scripts/mysqldbcompare.py', 'scripts/mysqlserverclone.py', 'scripts/mysqluc.py', 'scripts/mysqldiskusage.py', 'scripts/mysqlauditadmin.py', 'scripts/mysqluserclone.py', 'scripts/mysqlbinlogrotate.py', 'scripts/mysqlreplicate.py', 'scripts/mysqlfailover.py', 'scripts/mysqlbinlogmove.py', 'scripts/mysqlindexcheck.py', 'scripts/mysqldbexport.py', 'scripts/mysqlrplcheck.py', 'scripts/mysqlslavetrx.py', 'scripts/mysqlmetagrep.py', 'scripts/mysqlprocgrep.py', 'scripts/mysqlrplsync.py', 'scripts/mysqlbinlogpurge.py', 'scripts/mysqldiff.py', 'scripts/mysqlrplshow.py', 'scripts/mysqlfrm.py', 'scripts/mysqldbimport.py', 'scripts/mysqlauditgrep.py', 'scripts/mysqlgrants.py', 'scripts/mysqldbcopy.py', 'scripts/mysqlserverinfo.py', 'scripts/mysqlrpladmin.py']
package set set(['mysql.utilities.command', 'mysql.utilities.common', 'mysql.connector.fabric', 'mysql.connector.locales', 'mysql.connector', 'mysql.utilities', 'mysql.connector.django', 'mysql', 'mysql.connector.locales.eng'])
running install
running build
running build_py
running build_scripts
running install_lib
creating /usr/lib/python2.7/site-packages/mysql
creating /usr/lib/python2.7/site-packages/mysql/utilities
creating /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/dbexport.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/rpl_admin.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/__init__.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/userclone.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/binlog_admin.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/serverclone.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/grep.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/indexcheck.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/grants.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/check_rpl.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/setup_rpl.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/dbimport.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/failover_console.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/dbcopy.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/proc.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/rpl_sync_check.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/serverinfo.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/failover_daemon.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/dbcompare.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/read_frm.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/diskusage.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/utilitiesconsole.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/audit_log.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/diff.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
copying build/lib/mysql/utilities/command/show_rpl.py -> /usr/lib/python2.7/site-packages/mysql/utilities/command
creating /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/pattern_matching.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/server.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/user.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/variables.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/ip_parser.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/replication_ms.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/audit_log_parser.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/__init__.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/lock.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/tools.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/topology.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/table.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/charsets.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/parser.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/messages.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/gtid.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/audit_log_reader.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/database.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/grants_info.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/options.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/my_print_defaults.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/utilities.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/options_parser.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/binary_log_file.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/daemon.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/binlog.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/frm_reader.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/sql_transform.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/dbcompare.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/console.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/topology_map.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/format.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/rpl_sync.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/common/replication.py -> /usr/lib/python2.7/site-packages/mysql/utilities/common
copying build/lib/mysql/utilities/__init__.py -> /usr/lib/python2.7/site-packages/mysql/utilities
copying build/lib/mysql/utilities/exception.py -> /usr/lib/python2.7/site-packages/mysql/utilities
creating /usr/lib/python2.7/site-packages/mysql/connector
creating /usr/lib/python2.7/site-packages/mysql/connector/fabric
copying build/lib/mysql/connector/fabric/__init__.py -> /usr/lib/python2.7/site-packages/mysql/connector/fabric
copying build/lib/mysql/connector/fabric/caching.py -> /usr/lib/python2.7/site-packages/mysql/connector/fabric
copying build/lib/mysql/connector/fabric/connection.py -> /usr/lib/python2.7/site-packages/mysql/connector/fabric
copying build/lib/mysql/connector/fabric/balancing.py -> /usr/lib/python2.7/site-packages/mysql/connector/fabric
creating /usr/lib/python2.7/site-packages/mysql/connector/locales
copying build/lib/mysql/connector/locales/__init__.py -> /usr/lib/python2.7/site-packages/mysql/connector/locales
creating /usr/lib/python2.7/site-packages/mysql/connector/locales/eng
copying build/lib/mysql/connector/locales/eng/__init__.py -> /usr/lib/python2.7/site-packages/mysql/connector/locales/eng
copying build/lib/mysql/connector/locales/eng/client_error.py -> /usr/lib/python2.7/site-packages/mysql/connector/locales/eng
copying build/lib/mysql/connector/custom_types.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/__init__.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/charsets.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/errors.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/cursor_cext.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/abstracts.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/utils.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/constants.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/dbapi.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/pooling.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/network.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/conversion.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/connection.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/version.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/connection_cext.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/cursor.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/optionfiles.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/authentication.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/catch23.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/protocol.py -> /usr/lib/python2.7/site-packages/mysql/connector
copying build/lib/mysql/connector/errorcode.py -> /usr/lib/python2.7/site-packages/mysql/connector
creating /usr/lib/python2.7/site-packages/mysql/connector/django
copying build/lib/mysql/connector/django/introspection.py -> /usr/lib/python2.7/site-packages/mysql/connector/django
copying build/lib/mysql/connector/django/validation.py -> /usr/lib/python2.7/site-packages/mysql/connector/django
copying build/lib/mysql/connector/django/__init__.py -> /usr/lib/python2.7/site-packages/mysql/connector/django
copying build/lib/mysql/connector/django/schema.py -> /usr/lib/python2.7/site-packages/mysql/connector/django
copying build/lib/mysql/connector/django/client.py -> /usr/lib/python2.7/site-packages/mysql/connector/django
copying build/lib/mysql/connector/django/operations.py -> /usr/lib/python2.7/site-packages/mysql/connector/django
copying build/lib/mysql/connector/django/compiler.py -> /usr/lib/python2.7/site-packages/mysql/connector/django
copying build/lib/mysql/connector/django/features.py -> /usr/lib/python2.7/site-packages/mysql/connector/django
copying build/lib/mysql/connector/django/creation.py -> /usr/lib/python2.7/site-packages/mysql/connector/django
copying build/lib/mysql/connector/django/base.py -> /usr/lib/python2.7/site-packages/mysql/connector/django
copying build/lib/mysql/__init__.py -> /usr/lib/python2.7/site-packages/mysql
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/dbexport.py to dbexport.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/rpl_admin.py to rpl_admin.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/__init__.py to __init__.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/userclone.py to userclone.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/binlog_admin.py to binlog_admin.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/serverclone.py to serverclone.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/grep.py to grep.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/indexcheck.py to indexcheck.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/grants.py to grants.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/check_rpl.py to check_rpl.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/setup_rpl.py to setup_rpl.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/dbimport.py to dbimport.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/failover_console.py to failover_console.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/dbcopy.py to dbcopy.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/proc.py to proc.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/rpl_sync_check.py to rpl_sync_check.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/serverinfo.py to serverinfo.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/failover_daemon.py to failover_daemon.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/dbcompare.py to dbcompare.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/read_frm.py to read_frm.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/diskusage.py to diskusage.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/utilitiesconsole.py to utilitiesconsole.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/audit_log.py to audit_log.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/diff.py to diff.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/command/show_rpl.py to show_rpl.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/pattern_matching.py to pattern_matching.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/server.py to server.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/user.py to user.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/variables.py to variables.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/ip_parser.py to ip_parser.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/replication_ms.py to replication_ms.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/audit_log_parser.py to audit_log_parser.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/__init__.py to __init__.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/lock.py to lock.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/tools.py to tools.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/topology.py to topology.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/table.py to table.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/charsets.py to charsets.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/parser.py to parser.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/messages.py to messages.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/gtid.py to gtid.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/audit_log_reader.py to audit_log_reader.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/database.py to database.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/grants_info.py to grants_info.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/options.py to options.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/my_print_defaults.py to my_print_defaults.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/utilities.py to utilities.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/options_parser.py to options_parser.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/binary_log_file.py to binary_log_file.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/daemon.py to daemon.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/binlog.py to binlog.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/frm_reader.py to frm_reader.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/sql_transform.py to sql_transform.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/dbcompare.py to dbcompare.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/console.py to console.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/topology_map.py to topology_map.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/format.py to format.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/rpl_sync.py to rpl_sync.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/common/replication.py to replication.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/__init__.py to __init__.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/utilities/exception.py to exception.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/fabric/__init__.py to __init__.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/fabric/caching.py to caching.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/fabric/connection.py to connection.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/fabric/balancing.py to balancing.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/locales/__init__.py to __init__.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/locales/eng/__init__.py to __init__.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/locales/eng/client_error.py to client_error.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/custom_types.py to custom_types.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/__init__.py to __init__.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/charsets.py to charsets.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/errors.py to errors.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/cursor_cext.py to cursor_cext.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/abstracts.py to abstracts.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/utils.py to utils.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/constants.py to constants.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/dbapi.py to dbapi.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/pooling.py to pooling.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/network.py to network.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/conversion.py to conversion.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/connection.py to connection.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/version.py to version.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/connection_cext.py to connection_cext.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/cursor.py to cursor.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/optionfiles.py to optionfiles.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/authentication.py to authentication.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/catch23.py to catch23.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/protocol.py to protocol.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/errorcode.py to errorcode.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/django/introspection.py to introspection.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/django/validation.py to validation.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/django/__init__.py to __init__.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/django/schema.py to schema.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/django/client.py to client.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/django/operations.py to operations.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/django/compiler.py to compiler.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/django/features.py to features.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/django/creation.py to creation.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/connector/django/base.py to base.pyc
byte-compiling /usr/lib/python2.7/site-packages/mysql/__init__.py to __init__.pyc
running install_scripts
copying build/scripts-2.7/mysqldbimport -> /usr/bin
copying build/scripts-2.7/mysqlbinlogpurge -> /usr/bin
copying build/scripts-2.7/mysqlfrm -> /usr/bin
copying build/scripts-2.7/mysqlserverclone -> /usr/bin
copying build/scripts-2.7/mysqlindexcheck -> /usr/bin
copying build/scripts-2.7/mysqldiff -> /usr/bin
copying build/scripts-2.7/mysqlbinlogrotate -> /usr/bin
copying build/scripts-2.7/mysqlrpladmin -> /usr/bin
copying build/scripts-2.7/mysqlgrants -> /usr/bin
copying build/scripts-2.7/mysqlrplcheck -> /usr/bin
copying build/scripts-2.7/mysqlprocgrep -> /usr/bin
copying build/scripts-2.7/mysqlauditgrep -> /usr/bin
copying build/scripts-2.7/mysqlrplms -> /usr/bin
copying build/scripts-2.7/mysqlslavetrx -> /usr/bin
copying build/scripts-2.7/mysqlreplicate -> /usr/bin
copying build/scripts-2.7/mysqldbexport -> /usr/bin
copying build/scripts-2.7/mysqlrplshow -> /usr/bin
copying build/scripts-2.7/mysqluc -> /usr/bin
copying build/scripts-2.7/mysqlserverinfo -> /usr/bin
copying build/scripts-2.7/mysqlauditadmin -> /usr/bin
copying build/scripts-2.7/mysqlrplsync -> /usr/bin
copying build/scripts-2.7/mysqldbcompare -> /usr/bin
copying build/scripts-2.7/mysqldiskusage -> /usr/bin
copying build/scripts-2.7/mysqlfailover -> /usr/bin
copying build/scripts-2.7/mysqluserclone -> /usr/bin
copying build/scripts-2.7/mysqlbinlogmove -> /usr/bin
copying build/scripts-2.7/mysqlmetagrep -> /usr/bin
copying build/scripts-2.7/mysqldbcopy -> /usr/bin
changing mode of /usr/bin/mysqldbimport to 755
changing mode of /usr/bin/mysqlbinlogpurge to 755
changing mode of /usr/bin/mysqlfrm to 755
changing mode of /usr/bin/mysqlserverclone to 755
changing mode of /usr/bin/mysqlindexcheck to 755
changing mode of /usr/bin/mysqldiff to 755
changing mode of /usr/bin/mysqlbinlogrotate to 755
changing mode of /usr/bin/mysqlrpladmin to 755
changing mode of /usr/bin/mysqlgrants to 755
changing mode of /usr/bin/mysqlrplcheck to 755
changing mode of /usr/bin/mysqlprocgrep to 755
changing mode of /usr/bin/mysqlauditgrep to 755
changing mode of /usr/bin/mysqlrplms to 755
changing mode of /usr/bin/mysqlslavetrx to 755
changing mode of /usr/bin/mysqlreplicate to 755
changing mode of /usr/bin/mysqldbexport to 755
changing mode of /usr/bin/mysqlrplshow to 755
changing mode of /usr/bin/mysqluc to 755
changing mode of /usr/bin/mysqlserverinfo to 755
changing mode of /usr/bin/mysqlauditadmin to 755
changing mode of /usr/bin/mysqlrplsync to 755
changing mode of /usr/bin/mysqldbcompare to 755
changing mode of /usr/bin/mysqldiskusage to 755
changing mode of /usr/bin/mysqlfailover to 755
changing mode of /usr/bin/mysqluserclone to 755
changing mode of /usr/bin/mysqlbinlogmove to 755
changing mode of /usr/bin/mysqlmetagrep to 755
changing mode of /usr/bin/mysqldbcopy to 755
running install_egg_info
Writing /usr/lib/python2.7/site-packages/mysql_utilities-1.6.5-py2.7.egg-info

安装完成后,在相应的python执行目录下,就能mysqlfrm等执行文件了。

[root@localhost mysql-utilities-1.6.5]# ll
total 140
drwxr-xr-x. 4 root root     34 Mar 19 15:34 build
-rw-r--r--. 1 7161 31415 37814 Jan 18  2017 CHANGES.txt
drwxr-xr-x. 3 7161 31415    16 Jan 18  2017 docs
-rw-r--r--. 1 7161 31415  6680 Jan 18  2017 info.py
-rw-r--r--. 1 root root   5579 Mar 19 15:34 info.pyc
-rw-r--r--. 1 7161 31415 17987 Jan 18  2017 LICENSE.txt
drwxr-xr-x. 4 7161 31415    75 Mar 19 15:34 mysql
-rw-r--r--. 1 7161 31415   928 Jan 18  2017 PKG-INFO
-rw-r--r--. 1 7161 31415 34819 Jan 18  2017 README.txt
drwxr-xr-x. 2 7161 31415  4096 Mar 19 15:34 scripts
-rw-r--r--. 1 7161 31415 14232 Jan 18  2017 setup.py
drwxr-xr-x. 2 7161 31415  4096 Jan 18  2017 unit_tests
[root@localhost mysql-utilities-1.6.5]# cd build
[root@localhost build]# ll
total 4
drwxr-xr-x. 3 root root   18 Mar 19 15:34 lib
drwxr-xr-x. 2 root root 4096 Mar 19 15:34 scripts-2.7
[root@localhost build]# cd scripts-2.7/
[root@localhost scripts-2.7]# ll
total 336
-rwxr-xr-x. 1 root root 11966 Mar 19 15:34 mysqlauditadmin
-rwxr-xr-x. 1 root root 12207 Mar 19 15:34 mysqlauditgrep
-rwxr-xr-x. 1 root root 15938 Mar 19 15:34 mysqlbinlogmove
-rwxr-xr-x. 1 root root  7993 Mar 19 15:34 mysqlbinlogpurge
-rwxr-xr-x. 1 root root  3761 Mar 19 15:34 mysqlbinlogrotate
-rwxr-xr-x. 1 root root 17957 Mar 19 15:34 mysqldbcompare
-rwxr-xr-x. 1 root root 16193 Mar 19 15:34 mysqldbcopy
-rwxr-xr-x. 1 root root 14790 Mar 19 15:34 mysqldbexport
-rwxr-xr-x. 1 root root 14160 Mar 19 15:34 mysqldbimport
-rwxr-xr-x. 1 root root 12368 Mar 19 15:34 mysqldiff
-rwxr-xr-x. 1 root root  7383 Mar 19 15:34 mysqldiskusage
-rwxr-xr-x. 1 root root 17246 Mar 19 15:34 mysqlfailover
-rwxr-xr-x. 1 root root 18219 Mar 19 15:34 mysqlfrm
-rwxr-xr-x. 1 root root 10954 Mar 19 15:34 mysqlgrants
-rwxr-xr-x. 1 root root  6459 Mar 19 15:34 mysqlindexcheck
-rwxr-xr-x. 1 root root  5355 Mar 19 15:34 mysqlmetagrep
-rwxr-xr-x. 1 root root  5972 Mar 19 15:34 mysqlprocgrep
-rwxr-xr-x. 1 root root  7692 Mar 19 15:34 mysqlreplicate
-rwxr-xr-x. 1 root root 16910 Mar 19 15:34 mysqlrpladmin
-rwxr-xr-x. 1 root root  6405 Mar 19 15:34 mysqlrplcheck
-rwxr-xr-x. 1 root root 15545 Mar 19 15:34 mysqlrplms
-rwxr-xr-x. 1 root root  6693 Mar 19 15:34 mysqlrplshow
-rwxr-xr-x. 1 root root 12063 Mar 19 15:34 mysqlrplsync
-rwxr-xr-x. 1 root root  8981 Mar 19 15:34 mysqlserverclone
-rwxr-xr-x. 1 root root  5959 Mar 19 15:34 mysqlserverinfo
-rwxr-xr-x. 1 root root  6412 Mar 19 15:34 mysqlslavetrx
-rwxr-xr-x. 1 root root  6956 Mar 19 15:34 mysqluc
-rwxr-xr-x. 1 root root  8046 Mar 19 15:34 mysqluserclone