Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
linux:mysql [2019/01/12 13:27]
admin
linux:mysql [2019/01/12 13:42]
admin [Simple //naive// backup]
Line 2: Line 2:
  
 ====== Backup ====== ====== Backup ======
 +===== Simple //naive// backup =====
 +Back up all databases into one file at once is a **bad idea**.
 +  - If there is a single problem (corrupted table, unreadable file, whatever), the rest of DB will **not** be dumped
 +  - Restoring one DB within many from one file is difficult, time consuming and with slightly bigger databases ~ 10GB i wish you a lot of RUM
 +
 +Here is an example anyway
 <code sql> <code sql>
-GRANT LOCK TABLES, SELECT ON *.* TO '​backupuser'​@'​localhost'​ IDENTIFIED BY 'secret-password';+mysqldump -u root -p --all-databases > all_db_backup.sql 
 +</​code>​ 
 + 
 +In a script 
 +<code sql> 
 +mysqldump -u root --password="​my_secret"​ --all-databases > all_db_backup.sql 
 +</​code>​ 
 +If you are going to use this simple and //not so clever// backup, please at least make the file root readable only. 
 + 
 +=====Better way===== 
 +The backup user just need lock and read privileges. Create a backup user and grant lock tables and select privileges to it with the following MariaDB/​MySQL commands 
 + 
 +<code sql> 
 +GRANT LOCK TABLES, SELECT ON *.* TO '​backupuser'​@'​localhost'​ IDENTIFIED BY 'some_passwd';
 flush privileges; flush privileges;
 +</​code>​
 +
 +Then list all databases and in backup one after another. Use umask to keep you files root readable only. Here is our script for 7 days rotating backups.
 +<code bash>
 +DAY=$(date +"​%w"​)
 +BACKUP_TMP="/​some_storage/​db/​mysql-${DAY}"​
 +PASS="​some_passwd"​
 +USR="​backupuser"​
 +
 +umask 077
 +mkdir -p $BACKUP_TMP
 +
 +mysql -u $USR  --password=$PASS -Bse "SHOW DATABASES"​ | while read DB ; do
 +        mysqldump --no-tablespaces --single-transaction -u $USR --password=$PASS ${DB} | bzip2 > $BACKUP_TMP/​${DB}.sql.bz2
 +done
 </​code>​ </​code>​
  
 
linux/mysql.txt · Last modified: 2019/10/21 09:53 by admin