MySQL commands

From LemonWiki共筆
Jump to navigation Jump to search

MySQL commands and troubleshooting of MySQL errors.

Preparation[edit]

install MySQL database client apps contains mysql & mysqldump commands

  • Linux Os linux.png :
  • Win Os windows.png : Install (1) Cygwin, (2) search mysql & install MySQL database clients apps package
  • Mac icon_os_mac.png :
    • Install XAMPP. Path of mysql executable file is: /Applications/xampp/xamppfiles/bin/mysql
    • MAMP: path of mysql command: /Applications/MAMP/Library/bin/mysql[1]

(optional) install the Pipe Viewer (pv) package

create the db user

  1. create the db user
  2. grant the minimum permission: SELECT, LOCK TABLES to the db user. SQL query: GRANT SELECT, LOCK TABLES ON `DATA\_BASE\_NAME`.* TO 'dbuser'@'localhost';[5]
  3. the db user will be able to execute the mysqldump command

Exporting data of database/table into MySql sql file[edit]

mysqldump Options[edit]

Default option without any options specified

  • drop table & insert new data

Replace (overwrite) the current data

  • Run mysqldump with the option --replace --no-create-info[6][7]: (1) --replace: "Write REPLACE statements rather than INSERT statements." (2) --no-create-info: "Do not write CREATE TABLE statements that create each dumped table." & "Do not add a DROP TABLE statement before each CREATE TABLE statement"

Append the current data

  • Run mysqldump with the option --insert-ignore --no-create-info[8]: (1) mysqldump with the option --insert-ignore: "Write INSERT IGNORE statements rather than INSERT statements."

Schema only

Exporting entire data[edit]

method1: Good.gif export the compressed *.sql file (especially for BIG sql file). It will show a progress bar and estimated time to complete the mysqldump[9][10][11]:

  1. (optional) install pv if the pv was not installed
  2. (for InnoDB tables)mysqldump -h localhost -u username -p --force --single-transaction --default-character-set=utf8 DATA_BASE_NAME | pv | gzip -c > database.sql.gz [12][13] and press Enter
  3. ask to enter password and press Enter

optional: Append the Today's date to file name

  • On Linux Os linux.png : (for InnoDB tables)mysqldump -h localhost -u username -p --force --single-transaction --default-character-set=utf8 DATA_BASE_NAME | pv | gzip -c > database.sql.$(date +"%y%m%d").gz

method2: Bulk export individual tables into the multiple compressed *.sql files

mysqldump -h localhost -u username -pPASSWORD --force --single-transaction --default-character-set=utf8 DB_NAME TABLE_1 | pv | gzip -c > table_1.sql.gz
mysqldump -h localhost -u username -pPASSWORD --force --single-transaction --default-character-set=utf8 DB_NAME TABLE_2 | pv | gzip -c > table_2.sql.gz
   

note: the last line of above part is return symbol. The last command will not be executed automatically without the return symbol.

method3: export the *.sql file. It will show a progress bar and estimated time to complete the mysqldump [14]:

  1. (optional if the pv was not installed) yum install pv for RHEL / CentOS / SL / Fedora Linux
  2. (for InnoDB tables)mysqldump -h localhost -u username -p --force --single-transaction --default-character-set=utf8 DATA_BASE_NAME | pv > database.sql and press Enter
  3. enter password and press Enter

method4: export the *.sql file

  1. mysqldump -h localhost -u username -p --single-transaction --default-character-set=utf8 DATA-BASE-NAME > /path/to/database.sql

method5: Using phpmyadmin to export the database. Icon_exclaim.gif But I found the number rows of table after imported was not the same with the number rows of original table once.

Exporting selected data[edit]

mysqldump - Append MYSQL dump to a table - Stack Overflow [Last visited: 2016-06-29]


Potential failure issue[edit]

  • insufficient hard-disk space

Importing data from MySql sql file[edit]

Icon_exclaim.gif Notice: existing database will be overwritten

Optional

  1. (optional) install pv if the pv was not installed for RHEL / CentOS / SL / Fedora Linux or brew install pv for Mac icon_os_mac.png [15]
  2. (optional if the 7Zip was not installed) yum install p7zip for RHEL / CentOS / SL / Fedora Linux

method 1: Good.gif Import the compressed *.sql file with gzip (especially for BIG sql file). It will show a progress bar and estimated time to complete the mysql command:

  1. Install pv
  2. Check if the file is gzip format (test the compressed file integrity) ex: (1) gunzip -t database.sql.gz If not, it will return the message "gzip: database.sql.gz: not in gzip format." (2) Using WinMD5 Free for Win Os windows.png or md5sum command for Linux Os linux.png to obtain MD5 checksum of files.
  3. pv database.sql.gz | gunzip | mysql -u username -p -h localhost --default_character_set utf8 --force DATA_BASE_NAME [16] and press Enter
  4. enter password and press Enter The console window will show ETA (Estimated Time of Arrival)

method 2: Import *.sql file:

  1. (optional if the .sql file was compressed) unzip data.zip or gzip -d data.gz if the file was compressed by gzip
  2. mysql -u username -p -h localhost --default_character_set utf8 --force DATA_BASE_NAME < data.sql [17] and press Enter
  3. enter password and press Enter

method 3: Import the *.sql file (especially for BIG sql file). It will show a progress bar and estimated time to complete the mysql command[18]:

  1. Install pv
  2. pv data.sql | mysql -u username -p -h localhost --default_character_set utf8 --force DATA_BASE_NAME [19] and press Enter
  3. enter password and press Enter The console window will show ETA (Estimated Time of Arrival)

method 4: Import ZIP file to MySql directly:

  1. Install the 7Zip
  2. 7za x -so data.zip | mysql -u username -p -h localhost --default_character_set utf8 --force DATA_BASE_NAME [20][21] and press Enter
  3. enter password and press Enter

Synchronizing databases[edit]

Synchronizing two MySQL databases:

  • HeidiSQL - MySQL, MSSQL and PostgreSQL made easy v.9.4.0.5125 for Win Os windows.png , Mac icon_os_mac.png & Linux Os linux.png
    • Steps: Choose the database or table --> Export database as SQL --> Output: Select the mysql server connection
    • Scheduler: Not available[22] Icon_exclaim.gif. Manually synchronizing databases between two different servers.
  • Replication
    • Steps:
    • Scheduler: Auto Good.gif.
  • $ SQLyog v.12.4.0 for Win Os windows.png .
    • Steps: Menu --> Powertools --> Database Synchronization Wizard
    • Scheduler: Available Good.gif. Save the job file & Schedule it using Windows scheduler.
  • $ MySQL GUI Tool - MariaDB and MySQL Front End Client for Windows
    • Steps:
      • Menu: Comparison -> New Data Comparison -> Choose the connection: Next ->
      • Mapping: Select objects that you want to compare ->
      • After hours or minutes ...
      • Menu: Comparison -> Synchronize -> Open the synchronization script in the internal editor -> Synchronize
      • Menu: SQL -> Execute
    • Scheduler:


Transfer date from MS SQL server to MySQL or MariaDB server[23]:

  • $ SQLyog for Win Os windows.png . Use a query to specify the data to transfer from MS SQL server into MySQL server.

Show the MySQL process list & kill the process[edit]

Show the MySQL process list & kill the process (especial for SLOW query command)[24]

  1. mysql -h HOST -u ACCOUNT -p
  2. And keyin the PASSWORD of your MySQL ACCOUNT. The first character will be changed to mysql> from $ or #
  3. mysql>
    • SHOW FULL PROCESSLIST\G to show the process list
    • SHOW PROCESSLIST\G to show the brief process list
  4. mysql> kill 101; to kill the process with Id number: 101
  5. mysql> exit; to leave the MySQL command.

Troubleshooting of MySQL errors[edit]

Troubleshooting of MySQL errors

Further reading[edit]

References[edit]

  1. How to access the MySQL CLI With MAMP - DEV Community
  2. Linux / Unix pv Command: Monitor Progress of Data Sent Via a Pipe
  3. ivarch.com: Pipe Viewer
  4. Pipe Viewer (pv) in Mac OSX
  5. security - Minimum permissions for a user to perform a mysqldump? - Server Fault
  6. --replace
  7. --no-create-info
  8. --insert-ignore
  9. mysql - How can I monitor the progress of an import of a large .sql file? - Database Administrators Stack Exchange
  10. MySQL :: MySQL 5.1 Reference Manual :: 4.5.4 mysqldump — A Database Backup Program
  11. backup - How can I slow down a MySQL dump as to not affect current load on the server? - Stack Overflow
  12. pv + gzip + mysql — W. Andrew Loe III: Journal
  13. (if have permission to LOCK TABLES)mysqldump -h localhost -u username -p DATA_BASE_NAME | pv | gzip -c > database.sql.gz (if have no permission to LOCK TABLES)mysqldump -h localhost -u username -p --lock-tables=false DATA_BASE_NAME | pv | gzip -c > database.sql.gz via mysql - Run MySQLDump without Locking Tables - Stack Overflow
  14. MySQL Import/Export Progress Bar - Kevin Warrington
  15. pv — Homebrew Formulae
  16. pv + gzip + mysql — W. Andrew Loe III: Journal
  17. Import MySQL Dumpfile, SQL Datafile Into My Database
  18. mysql - How can I monitor the progress of an import of a large .sql file? - Database Administrators Stack Exchange
  19. Import MySQL Dumpfile, SQL Datafile Into My Database
  20. database - Importing zipped files in Mysql using command line - Stack Overflow
  21. Install 7Zip on CentOS 5.5
  22. Schedule backups/exports
  23. MONyog & SQLyog - MariaDB Knowledge Base
  24. MySQL :: MySQL 5.1 Reference Manual :: 13.7.5.31 SHOW PROCESSLIST Syntax


Troubleshooting of ...

Template