Experimenting with the new Data Dictionary Labs Release
Labs releases are intended to provide early access to new features. As Gopal notes in his recent blog post About the Data Dictionary Labs Release, there is a notable restriction where upgrading from any previous MySQL database version is not supported.
Today, I thought I would demonstrate how to get the data dictionary lab up and running on a fresh Ubuntu 14.04 installation:
# Download from labs.mysql.com wget http://downloads.mysql.com/snapshots/pb/mysql-5.7.5-labs-dd/mysql-5.7.5-labs-dd-linux-el6-x86_64.tar.gz # extract it to /usr/local/mysql # more or less following instructions in INSTALL-BINARY groupadd mysql useradd -r -g mysql mysql tar -xzf mysql-5.7.5-labs-dd-linux-el6-x86_64.tar.gz mv mysql-5.7.5-labs-dd-linux-el6-x86_64 /usr/local/ ln -s /usr/local/mysql-5.7.5-labs-dd-linux-el6-x86_64 /usr/local/mysql cd /usr/local/mysql chown -R mysql . chgrp -R mysql .
At this point, the next step in the instructions actually failed for me:
bin/mysql_install_db --user=mysql 2014-10-15 09:22:34 [ERROR] The data directory needs to be specified.
This behavior change appears to be the result of mysql_install_db being rewritten in C++. Specifying the datadir addresses this, but also results in another error:
bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data 2014-10-15 09:24:15 [ERROR] The child process terminated prematurely. Errno= 32 2014-10-15 09:24:15 [ERROR] Failed to execute /usr/local/mysql-5.7.5-labs-dd-linux-el6-x86_64/bin/mysqld --no-defaults --install-server --datadir=/usr/local/mysql/data --lc-messages-dir=/usr/local/mysql/share --lc-messages=en_US -- server log begin --
Error 32 is a broken pipe. From the description, we can see that mysql_install_db tried to call a subprocess (mysqld --install-server), but it exited prematurely. The description here doesn't show why it exited prematurely, but we can execute this command directly to find out:
/usr/local/mysql-5.7.5-labs-dd-linux-el6-x86_64/bin/mysqld --no-defaults --install-server --datadir=/usr/local/mysql/data --lc-messages-dir=/usr/local/mysql/share --lc-messages=en_US /usr/local/mysql-5.7.5-labs-dd-linux-el6-x86_64/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
OK! We don't have the async IO dependency installed on this system, which is used by InnoDB:
apt-get install libaio1 Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: linux-headers-3.13.0-36 linux-headers-3.13.0-36-generic linux-image-3.13.0-36-generic linux-image-extra-3.13.0-36-generic Use 'apt-get autoremove' to remove them. The following NEW packages will be installed: libaio1 0 upgraded, 1 newly installed, 0 to remove and 3 not upgraded. Need to get 6,364 B of archives. After this operation, 53.2 kB of additional disk space will be used. Get:1 http://mirrors.digitalocean.com/ubuntu/ trusty/main libaio1 amd64 0.3.109-4 [6,364 B] Fetched 6,364 B in 0s (319 kB/s) Selecting previously unselected package libaio1:amd64. (Reading database ... 116531 files and directories currently installed.) Preparing to unpack .../libaio1_0.3.109-4_amd64.deb ... Unpacking libaio1:amd64 (0.3.109-4) ... Setting up libaio1:amd64 (0.3.109-4) ... Processing triggers for libc-bin (2.19-0ubuntu6.3) ...
Now to try the original install command again:
bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
It should return no errors now. To follow the remaining steps in the INSTALL-BINARY instructions:
chown -R root . chown -R mysql data bin/mysqld_safe --user=mysql &
In MySQL 5.7, installation is secure by default. This means that a root password is automatically generated, and stored in ~/.mysql_secret:
cat ~/.mysql_secret # Password set for user 'root@localhost' at 2014-10-15 09:32:09 Wpckgmde+U,o
It is possible to change this password with the MySQL command line client:
./bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.5-labs-dd
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SET PASSWORD=PASSWORD('acdc');
Query OK, 0 rows affected (0.00 sec)
As Gopal mentioned in his blog post, the labs release runs completely without frm files:
ls /usr/local/mysql/data/mysql catalogs.ibd help_relation.ibd slave_relay_log_info.ibd character_sets.ibd help_topic.ibd slave_worker_info.ibd collations.ibd index_column_usage.ibd slow_log.CSM columns.ibd indexes.ibd slow_log.CSV columns_priv.MYD index_partitions.ibd table_partitions.ibd columns_priv.MYI index_stats.ibd table_partition_values.ibd column_type_elements.ibd innodb_index_stats.ibd tables.ibd db.MYD innodb_table_stats.ibd tablespace_files.ibd db.MYI ndb_binlog_index.MYD tablespaces.ibd db.opt ndb_binlog_index.MYI tables_priv.MYD engine_cost.ibd parameters.ibd tables_priv.MYI event.MYD plugin.ibd table_stats.ibd event.MYI proc.MYD time_zone.ibd events.ibd proc.MYI time_zone_leap_second.ibd foreign_key_column_usage.ibd procs_priv.MYD time_zone_name.ibd foreign_keys.ibd procs_priv.MYI time_zone_transition.ibd func.MYD proxies_priv.MYD time_zone_transition_type.ibd func.MYI proxies_priv.MYI triggers.ibd general_log.CSM routines.ibd user.MYD general_log.CSV schemata.ibd user.MYI gtid_executed.ibd server_cost.ibd view_table_usage.ibd help_category.ibd servers.ibd help_keyword.ibd slave_master_info.ibd
information_schema is a now also a set of views on top of real InnoDB tables (stored in the mysql schema). As a VIEW we can explain it, and since extended explain is always enabled in 5.7, SHOW WARNINGS will show the rewritten form:
mysql> SELECT * FROM information_schema.tables WHERE table_name = 'user'\G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: mysql
TABLE_NAME: user
TABLE_TYPE: BASE TABLE
ENGINE: MyISAM
VERSION: 10
ROW_FORMAT: Dynamic
TABLE_ROWS: 1
AVG_ROW_LENGTH: NULL
DATA_LENGTH: NULL
MAX_DATA_LENGTH: NULL
INDEX_LENGTH: NULL
DATA_FREE: NULL
AUTO_INCREMENT: 1
CREATE_TIME: 2014-10-15 09:32:10
UPDATE_TIME: 2014-10-15 09:32:10
CHECK_TIME:
TABLE_COLLATION: utf8_bin
CHECKSUM: NULL
CREATE_OPTIONS: stats_persistent=1
TABLE_COMMENT: Users and global privileges
1 row in set (0.00 sec)
mysql> EXPLAIN SELECT * FROM information_schema.tables WHERE table_name = 'user'\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: cat
partitions: NULL
type: index
possible_keys: PRIMARY
key: name
key_len: 194
ref: NULL
rows: 1
filtered: 100.00
Extra: Using index; Using temporary; Using filesort
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: sch
partitions: NULL
type: ref
possible_keys: PRIMARY,catalog_id
key: catalog_id
key_len: 8
ref: mysql.cat.id
rows: 3
filtered: 100.00
Extra: Using index
*************************** 3. row ***************************
id: 1
select_type: SIMPLE
table: tbl
partitions: NULL
type: eq_ref
possible_keys: schema_id
key: schema_id
key_len: 202
ref: mysql.sch.id,const
rows: 1
filtered: 100.00
Extra: Using index condition
*************************** 4. row ***************************
id: 1
select_type: SIMPLE
table: col
partitions: NULL
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 8
ref: mysql.tbl.collation_id
rows: 1
filtered: 100.00
Extra: NULL
*************************** 5. row ***************************
id: 1
select_type: SIMPLE
table: stat
partitions: NULL
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 388
ref: mysql.sch.name,const
rows: 1
filtered: 100.00
Extra: NULL
5 rows in set, 1 warning (0.00 sec)
mysql> SHOW WARNINGS\G
*************************** 1. row ***************************
Level: Note
Code: 1003
Message: /* select#1 */ select `cat`.`name` AS `TABLE_CATALOG`,`sch`.`name` AS `TABLE_SCHEMA`,`tbl`.`name` AS `TABLE_NAME`,`tbl`.`type` AS `TABLE_TYPE`,`tbl`.`engine` AS `ENGINE`,`tbl`.`version` AS `VERSION`,`tbl`.`row_format` AS `ROW_FORMAT`,ifnull(`stat`.`table_rows`,1) AS `TABLE_ROWS`,`stat`.`avg_row_length` AS `AVG_ROW_LENGTH`,`stat`.`data_length` AS `DATA_LENGTH`,`stat`.`max_data_length` AS `MAX_DATA_LENGTH`,`stat`.`index_length` AS `INDEX_LENGTH`,`stat`.`data_free` AS `DATA_FREE`,ifnull(`stat`.`auto_increment`,1) AS `AUTO_INCREMENT`,`tbl`.`created` AS `CREATE_TIME`,`tbl`.`last_altered` AS `UPDATE_TIME`,'' AS `CHECK_TIME`,`col`.`name` AS `TABLE_COLLATION`,`stat`.`checksum` AS `CHECKSUM`,get_dd_create_options(`tbl`.`options`) AS `CREATE_OPTIONS`,`tbl`.`comment` AS `TABLE_COMMENT` from `mysql`.`tables` `tbl` join `mysql`.`schemata` `sch` join `mysql`.`catalogs` `cat` left join `mysql`.`collations` `col` on((`col`.`id` = `tbl`.`collation_id`)) left join `mysql`.`table_stats` `stat` on(((`stat`.`schema_name` = `sch`.`name`) and (`stat`.`table_name` = 'user'))) where ((`tbl`.`schema_id` = `sch`.`id`) and (`sch`.`catalog_id` = `cat`.`id`) and (`tbl`.`name` = 'user') and can_access_table(`sch`.`name`,`tbl`.`name`)) order by `sch`.`name`,`tbl`.`name`
1 row in set (0.00 sec)
Original link: http://www.tocker.ca/2014/10/15/experimenting-with-the-new-data-dictionary-labs-release.html
-
启动mysql服务和添加开机启动mysql服务:
添加开机启动:执行命令cp support-files/mysql.server /etc/init.d/mysql,把启动脚本放到开机初始化目录
启动mysql服务:执行命令service mysql start
执行命令:ps -ef|grep mysql 看到mysql服务说明启动成功,如图
-
修改mysql的root用户密码,root初始密码为空的:
执行命令:./bin/mysqladmin -u root password '密码'



浙公网安备 33010602011771号