bitsCN.com
Percona Data Recovery Tool for InnoDB工具恢复单表的案例
今天上班有个朋友询问我,相关Percona Data Recovery Tool for InnoDB恢复数据中的一些问题,比如说delete,没法恢复数据,原先做过类似的异常处理就,再次模拟了下相关的恢复操作流程,仅供学习使用;相关的配置工具策略网上很多,这里我就一笔带过了,不再进行详述,下面就开始梳理相关的细节问题;
[root@Mysql64 local]# mysql -uroot -prootWelcome to the MySQL monitor. Commands end with ; or /g.Your MySQL connection id is 33Server version: 5.5.28-log Source distributionType 'help;' or '/h' for help. Type '/c' to clear the buffer.mysql> create database gg;ERROR 1007 (HY000): Can't create database 'gg'; database existsmysql> show databases;+--------------------+| Database |+--------------------+| information_schema | | cacti | | gg | | mysql | | performance_schema | | temp | | test | +--------------------+7 rows in set (0.12 sec)mysql> use gg;Database changedmysql> show tables;Empty set (0.00 sec)mysql> create table a select * from mysql.user;Query OK, 12 rows affected (0.17 sec)Records: 12 Duplicates: 0 Warnings: 0mysql> delete from a;Query OK, 12 rows affected (0.12 sec)mysql> select * from a;Empty set (0.00 sec)mysql> [root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# ./page_parser -5 -f /usr/local/mysql/data/gg/a.ibd Opening file: /usr/local/mysql/data/gg/a.ibd:64768 ID of device containing file5836121 inode number33200 protection1 number of hard links500 user ID of owner500 group ID of owner0 device ID (if special file)98304 total size, in bytes4096 blocksize for filesystem I/O200 number of blocks allocated1377829472 time of last access1377831011 time of last modification1377831011 time of last status change98304 Size to process in bytes104857600 Disk cache size in bytes[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]#./create_defs.pl --host=localhost --user=root --password=root --db=gg --table=a > include/table_defs.h[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# cat include/table_defs.h can_be_null: FALSE, uint_min_val: 0, uint_max_val: 4294967295ULL }, can_be_null: FALSE }, { /* char(64) */ name: "plugin", type: FT_CHAR, min_length: 64, max_length: 192, has_limits: FALSE, limits: { can_be_null: TRUE, char_min_len: 0, char_max_len: 192, char_ascii_only: TRUE }, can_be_null: TRUE }, { /* text */ name: "authentication_string", type: FT_TEXT, min_length: 0, max_length: 65535, has_limits: FALSE, limits: { can_be_null: TRUE, char_min_len: 0, char_max_len: 65535, char_ascii_only: TRUE }, can_be_null: TRUE }, { type: FT_NONE } } },};#endif[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# [root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# ./constraints_parser -5 -D -f pages-1377849796/FIL_PAGE_INDEX/0-18/0-00000003.page LOAD DATA INFILE '/usr/local/percona-data-recovery-tool-for-innodb-0.5/dumps/default/SYS_TABLES' REPLACE INTO TABLE `SYS_TABLES` FIELDS TERMINATED BY '/t' OPTIONALLY ENCLOSED BY '"' LINES STARTING BY 'SYS_TABLES/t' (NAME, ID, N_COLS, TYPE, MIX_ID, MIX_LEN, CLUSTER_NAME, SPACE);[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# makegcc -DHAVE_OFFSET64_T -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -Wall -O3 -g -I include -I mysql-source/include -I mysql-source/innobase/include -c tables_dict.c -o lib/tables_dict.ogcc -DHAVE_OFFSET64_T -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -Wall -O3 -g -I include -I mysql-source/include -I mysql-source/innobase/include -c print_data.c -o lib/print_data.o gcc -DHAVE_OFFSET64_T -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -Wall -O3 -g -I include -I mysql-source/include -I mysql-source/innobase/include -c check_data.c -o lib/check_data.ogcc -DHAVE_OFFSET64_T -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -Wall -O3 -g -I include -I mysql-source/include -I mysql-source/innobase/include -o constraints_parser constraints_parser.c lib/tables_dict.o lib/print_data.o lib/check_data.o lib/libut.a lib/libmystrings.agcc -DHAVE_OFFSET64_T -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -Wall -O3 -g -I include -I mysql-source/include -I mysql-source/innobase/include -static -lrt -o page_parser page_parser.c lib/tables_dict.o lib/libut.a [root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# 这里需要重新编译才可以生产,不能只变异一次,不然后期你会看不到数据都为空值的;记住这里需要进行2次make哦,不能少一次![root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# ./constraints_parser -5 -f pages-1377849796/FIL_PAGE_INDEX/0-18/0-00000003.page a "localhost " "root " "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "" 00 0 0 " " ""a "Mysql64 " "root " "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "" 00 0 0 " " ""a "127.0.0.1 " "root " "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "" 00 0 0 " " ""a "::1 " "root " "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "" 00 0 0 " " ""a "localhost " " " " " "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "" 00 0 0 " " NULLa "Mysql64 " " " " " "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "" 00 0 0 " " NULLa "localhost " "cacti " "*43DD7940383044FBDE5B177730FAD3405BC6DAD7" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "" 00 0 0 " " NULLa "192.168.155.229 " "cacti " "*43DD7940383044FBDE5B177730FAD3405BC6DAD7" "N" "N" "N" "N" "N" "N" "N" "N" "Y" "N" "N" "N" "N" "N" "N" "Y" "N" "N" "N" "N" "Y" "N" "N" "N" "N" "N" "N" "N" "N" "" 00 0 0 " " NULLa "% " "cacti " "*43DD7940383044FBDE5B177730FAD3405BC6DAD7" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "N" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "" 00 0 0 " " NULLa "127.0.0.1 " "cacti " "*43DD7940383044FBDE5B177730FAD3405BC6DAD7" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "" 00 0 0 " " NULLa "*.* " "cacti " " " "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "" 00 0 0 " " NULLa "% " "root " "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "" 00 0 0 " " NULLLOAD DATA INFILE '/usr/local/percona-data-recovery-tool-for-innodb-0.5/dumps/default/a' REPLACE INTO TABLE `a` FIELDS TERMINATED BY '/t' OPTIONALLY ENCLOSED BY '"' LINES STARTING BY 'a/t' (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, Event_priv, Trigger_priv, Create_tablespace_priv, ssl_type, @var_ssl_cipher, @var_x509_issuer, @var_x509_subject, max_questions, max_updates, max_connections, max_user_connections, plugin, authentication_string)SET ssl_cipher = UNHEX(@var_ssl_cipher), x509_issuer = UNHEX(@var_x509_issuer), x509_subject = UNHEX(@var_x509_subject);[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# 结下了看到了我从ibd里面删除的数据,我要把它放到一个目录内,记住这里我需要放到含有mysql访问的目录内,原先我存放在tmp啊,data目录啊都不行,最后放在mysql权限内的目录就可以了;[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# ./constraints_parser -5 -f pages-1377849796/FIL_PAGE_INDEX/0-18/0-00000003.page > /usr/local/mysql/data/find.sqlLOAD DATA INFILE '/usr/local/percona-data-recovery-tool-for-innodb-0.5/dumps/default/a' REPLACE INTO TABLE `a` FIELDS TERMINATED BY '/t' OPTIONALLY ENCLOSED BY '"' LINES STARTING BY 'a/t' (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, Event_priv, Trigger_priv, Create_tablespace_priv, ssl_type, @var_ssl_cipher, @var_x509_issuer, @var_x509_subject, max_questions, max_updates, max_connections, max_user_connections, plugin, authentication_string)SET ssl_cipher = UNHEX(@var_ssl_cipher), x509_issuer = UNHEX(@var_x509_issuer), x509_subject = UNHEX(@var_x509_subject);[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# 查询目录的内容是否正确;[root@Mysql64 data]# pwd/usr/local/mysql/data[root@Mysql64 data]# ll -h | grep find*-rw-r--r-- 1 root root 3.9K 08-30 16:31 find.sql 看到是有数据的有3.9k左右大小,当然这里是测试数据量比较小(mysql.user的数据量)![root@Mysql64 data]# [root@Mysql64 data]# vi find.sql ---看看内容;a "localhost " "root " "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "" 0 0 0 0 " " ""a "Mysql64 " "root " "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "" 0 0 0 0 " " ""a "127.0.0.1 " "root " "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "" 0 0 0 0 " " ""a "::1 " "root " "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "" 0 0 0 0 " " ""a "localhost " " " " " "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "" 0 0 0 0 " " NULLa "Mysql64 " " " " " "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "" 0 0 0 0 " " NULLa "localhost " "cacti " "*43DD7940383044FBDE5B177730FAD3405BC6DAD7" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "" 0 0 0 0 " " NULLa "192.168.155.229 " "cacti " "*43DD7940383044FBDE5B177730FAD3405BC6DAD7" "N" "N" "N" "N" "N" "N" "N" "N" "Y" "N" "N" "N" "N" "N" "N" "Y" "N" "N" "N" "N" "Y" "N" "N" "N" "N" "N" "N" "N" "N" "" 0 0 0 0 " " NULLa "% " "cacti " "*43DD7940383044FBDE5B177730FAD3405BC6DAD7" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "N" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "" 0 0 0 0 " " NULLa "127.0.0.1 " "cacti " "*43DD7940383044FBDE5B177730FAD3405BC6DAD7" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "N" "" 0 0 0 0 " " NULLa "*.* " "cacti " " " "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "" 0 0 0 0 " " NULLa "% " "root " "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "Y" "" 0 0 0 0 " " NULL~~~~~~~~~~~[root@Mysql64 data]# 下面我们需要把sql文件内的文本load到我们的库内;这里我需要提出的是load的路径,要进行设置下; 上面我在导入的时候估计变量忘记设置,导致出现部分失误,这里需要做的同学注意下; mysql> use gg;Database changedmysql> select * from a;Empty set (0.00 sec)mysql> LOAD DATA INFILE '/usr/local/mysql/data/find.sql' REPLACE INTO TABLE `a` FIELDS TERMINATED BY '/t' OPTIONALLY ENCLOSED BY '"' LINES STARTING BY 'a/t' (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, Event_priv, Trigger_priv, Create_tablespace_priv, ssl_type, @var_ssl_cipher, @var_x509_issuer, @var_x509_subject, max_questions, max_updates, max_connections, max_user_connections, plugin, authentication_string) -> SET -> ssl_cipher = UNHEX(@var_ssl_cipher), -> x509_issuer = UNHEX(@var_x509_issuer), -> x509_subject = UNHEX(@var_x509_subject);Query OK, 12 rows affected (0.03 sec)Records: 12 Deleted: 0 Skipped: 0 Warnings: 0mysql> select * from a;+-----------------+-------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+--------+-----------------------+| Host | User | Password | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin | authentication_string |+-----------------+-------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+--------+-----------------------+| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | | | | Mysql64 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | | | | 127.0.0.1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | | | | ::1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | | | | localhost | | | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | | | | | 0 | 0 | 0 | 0 | | NULL | | Mysql64 | | | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | | | | | 0 | 0 | 0 | 0 | | NULL | | localhost | cacti | *43DD7940383044FBDE5B177730FAD3405BC6DAD7 | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | | | | | 0 | 0 | 0 | 0 | | NULL | | 192.168.155.229 | cacti | *43DD7940383044FBDE5B177730FAD3405BC6DAD7 | N | N | N | N | N | N | N | N | Y | N | N | N | N | N | N | Y | N | N | N | N | Y | N | N | N | N | N | N | N | N | | | | | 0 | 0 | 0 | 0 | | NULL | | % | cacti | *43DD7940383044FBDE5B177730FAD3405BC6DAD7 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | | NULL | | 127.0.0.1 | cacti | *43DD7940383044FBDE5B177730FAD3405BC6DAD7 | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | | | | | 0 | 0 | 0 | 0 | | NULL | | *.* | cacti | | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | | NULL | | % | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | | NULL | +-----------------+-------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+--------+-----------------------+12 rows in set (0.00 sec)mysql>
bitsCN.com

Peranan utama MySQL dalam aplikasi web adalah untuk menyimpan dan mengurus data. 1.MYSQL dengan cekap memproses maklumat pengguna, katalog produk, rekod urus niaga dan data lain. 2. Melalui pertanyaan SQL, pemaju boleh mengekstrak maklumat dari pangkalan data untuk menghasilkan kandungan dinamik. 3.MYSQL berfungsi berdasarkan model klien-pelayan untuk memastikan kelajuan pertanyaan yang boleh diterima.

Langkah -langkah untuk membina pangkalan data MySQL termasuk: 1. Buat pangkalan data dan jadual, 2. Masukkan data, dan 3. Pertama, gunakan pernyataan CreatedataBase dan createtable untuk membuat pangkalan data dan jadual, kemudian gunakan pernyataan InsertInto untuk memasukkan data, dan akhirnya gunakan pernyataan PILIH untuk menanyakan data.

MySQL sesuai untuk pemula kerana mudah digunakan dan berkuasa. 1.MYSQL adalah pangkalan data relasi, dan menggunakan SQL untuk operasi CRUD. 2. Ia mudah dipasang dan memerlukan kata laluan pengguna root untuk dikonfigurasi. 3. Gunakan Masukkan, Kemas kini, Padam, dan Pilih untuk Melaksanakan Operasi Data. 4. Orderby, di mana dan menyertai boleh digunakan untuk pertanyaan yang kompleks. 5. Debugging memerlukan memeriksa sintaks dan gunakan Jelaskan untuk menganalisis pertanyaan. 6. Cadangan pengoptimuman termasuk menggunakan indeks, memilih jenis data yang betul dan tabiat pengaturcaraan yang baik.

MySQL sesuai untuk pemula kerana: 1) mudah dipasang dan mengkonfigurasi, 2) sumber pembelajaran yang kaya, 3) sintaks SQL intuitif, 4) sokongan alat yang kuat. Walau bagaimanapun, pemula perlu mengatasi cabaran seperti reka bentuk pangkalan data, pengoptimuman pertanyaan, pengurusan keselamatan, dan sandaran data.

Ya, sqlisaprogramminglanguagespecializedfordatamanagement.1) it'sdeclarative, focusingonwhathattoachieverthanhan.2) sqlisesessentialforquerying, memasukkan, mengemas kini, dandeleletingdatainrelationaldatabases.3)

Atribut asid termasuk atom, konsistensi, pengasingan dan ketahanan, dan merupakan asas reka bentuk pangkalan data. 1. Atomicity memastikan bahawa urus niaga sama ada berjaya atau gagal sepenuhnya. 2. Konsistensi memastikan pangkalan data tetap konsisten sebelum dan selepas transaksi. 3. Pengasingan memastikan bahawa urus niaga tidak mengganggu satu sama lain. 4. Kegigihan memastikan data disimpan secara kekal selepas penyerahan transaksi.

MySQL bukan sahaja sistem pengurusan pangkalan data (DBMS) tetapi juga berkait rapat dengan bahasa pengaturcaraan. 1) Sebagai DBMS, MySQL digunakan untuk menyimpan, menyusun dan mengambil data, dan mengoptimumkan indeks dapat meningkatkan prestasi pertanyaan. 2) Menggabungkan SQL dengan bahasa pengaturcaraan, tertanam dalam Python, menggunakan alat ORM seperti SQLalChemy dapat memudahkan operasi. 3) Pengoptimuman prestasi termasuk pengindeksan, pertanyaan, caching, perpustakaan dan bahagian meja dan pengurusan transaksi.

MySQL menggunakan arahan SQL untuk menguruskan data. 1. Perintah asas termasuk pilih, masukkan, kemas kini dan padam. 2. Penggunaan lanjutan melibatkan fungsi gabungan, subquery dan agregat. 3. Kesilapan umum termasuk isu sintaks, logik dan prestasi. 4. Petua Pengoptimuman termasuk menggunakan indeks, mengelakkan Pilih* dan menggunakan had.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa