2,187
edits
(→Maintenance: Added "Shrink MyISAM Table") |
(Removed categories) |
||
(10 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{Depreciated|category=MySQL}} | |||
See the official [http://dev.mysql.com/doc/ MySQL documentation] for further info. | See the official [http://dev.mysql.com/doc/ MySQL documentation] for further info. | ||
Line 22: | Line 24: | ||
== User Accounts == | == User Accounts == | ||
=== Create Users and Grant/Revoke Privileges === | === Create Users and Grant/Revoke Privileges === | ||
After making any changes to user privilages, you need to flush them to ensure they're applied... | |||
<source lang="mysql"> FLUSH PRIVILEGES; </source> | |||
To give full privileges (including the ability to alter user accounts) to a new user coming from any location use; | To give full privileges (including the ability to alter user accounts) to a new user coming from any location use; | ||
<source lang="mysql"> GRANT ALL PRIVILEGES on <database>.* to '<user>'@'%' identified by '<password>' | <source lang="mysql"> GRANT ALL PRIVILEGES on <database>.* to '<user>'@'%' identified by '<password>' WITH GRANT OPTION; </source> | ||
To give no privileges to a new user coming from a specific host; | To give no privileges to a new user coming from a specific host; | ||
Line 261: | Line 266: | ||
SHOW INDEX FROM table; # Show tables index/key information | SHOW INDEX FROM table; # Show tables index/key information | ||
SHOW CREATE TABLE table; # Shows syntax that would be used to recreate a table | SHOW CREATE TABLE table; # Shows syntax that would be used to recreate a table | ||
</source> | |||
==== Database Sizes ==== | |||
'''Databases''' | |||
<source lang="mysql"> | |||
SELECT table_schema "Database", Round(Sum(data_length + index_length) / 1024 / 1024, 1) "Size (MB)" FROM information_schema.tables GROUP BY table_schema; | |||
</source> | |||
'''Top Tables''' | |||
Be sure to update the database name in the <code>FROM</code> line | |||
<source lang="mysql"> | |||
SELECT table_name, | |||
ROUND(table_rows / 1000, 2) AS 'rows (K)', | |||
ROUND(data_length / ( 1024 * 1024), 2) AS 'data (MB)', | |||
ROUND(index_length / ( 1024 * 1024), 2) AS 'index (MB)', | |||
ROUND(( data_length + index_length ) / ( 1024 * 1024), 2) AS 'total (MB)' | |||
FROM information_schema.TABLES WHERE table_schema = 'databasename' | |||
ORDER BY data_length + index_length DESC | |||
LIMIT 15; | |||
</source> | |||
Adapted from http://www.mysqlperformanceblog.com/2008/02/04/finding-out-largest-tables-on-mysql-server/ | |||
=== Export / Backup === | |||
<source lang="mysql"> | |||
mysqldump -u root -p dbname > dbname.sql # Basic dump | |||
mysqldump -u root -p dbname | dbname.sql.gz # Create a compressed dump | |||
# Exclude certain tables | |||
mysqldump -u root -p dbname --ignore-table=dbname.table1 --ignore-table=dbname.table2 > dbname.sql | |||
# Export a table as CSV | |||
SELECT * INTO OUTFILE '/tmp/table.csv' | |||
FIELDS TERMINATED BY ',' ENCLOSED BY '' ESCAPED BY '\\' | |||
LINES TERMINATED BY '\n' FROM table; | |||
</source> | </source> | ||
Line 272: | Line 312: | ||
<source lang="mysql"> | <source lang="mysql"> | ||
OPTIMIZE TABLE SystemEvents; | OPTIMIZE TABLE SystemEvents; | ||
</source> | |||
=== Skip Replication Errors === | |||
Sometimes replication to a Slave will stop due to an error. To skip the error and restart replication, perform the following on the slave... | |||
<source lang="mysql"> | |||
STOP SLAVE; | |||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; | |||
START SLAVE; | |||
</source> | |||
=== Restart Replication === | |||
If replication is completely broken, or the slave no longer has an accurate copy of the master. | |||
# Create dump from master | |||
#* <code> mysqldump -u root -p --master-data --all-databases --flush-privileges | gzip -1 > /var/tmp/replication.sql.gz </code> | |||
# Copy to slave | |||
#* EG <code> scp /var/tmp/replication.sql.gz root@10.1.1.55:/var/tmp/. </code> | |||
# Stop slave if still running | |||
#* In MySQL - <code>STOP SLAVE;</code> | |||
# Import into slave | |||
#* <code> zcat /var/tmp/replication.sql.gz | mysql -u root -p</code> | |||
# Start slave | |||
#* In MySQL - <code>START SLAVE;</code> | |||
=== Remove Old Binary Logs === | |||
Make sure that any Slave's are up to date before deleting old binary logs | |||
<source lang="mysql"> | |||
SHOW MASTER STATUS\g | |||
SHOW MASTER LOGS; # Get list of logfiles | |||
PURGE MASTER LOGS TO 'mysql-bin.012344'; # Removes all logs up to the one specified | |||
</source> | </source> | ||
Line 292: | Line 362: | ||
To create a blank copy of a database (ie with a schema but no data) follow the procedure above but use the <code>-d</code> option when creating the dump, so | To create a blank copy of a database (ie with a schema but no data) follow the procedure above but use the <code>-d</code> option when creating the dump, so | ||
* <code> mysqldump -u root -p -d sourcedb > sourcedb-schema.sql </code> | * <code> mysqldump -u root -p -d sourcedb > sourcedb-schema.sql </code> | ||