Guest User

Untitled

a guest
Apr 4th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.78 KB | None | 0 0
  1. mysql> SELECT DISTINCT table_schema FROM information_schema.tables WHERE table_schema NOT IN ('information_schema','mysql')
  2. -> ;
  3. ERROR 126 (HY000): Incorrect key file for table '/tmp/#sql_29ef_0.MYI'; try to repair it
  4.  
  5. # df -h /tmp/
  6. Filesystem Size Used Avail Use% Mounted on
  7. tmpfs 2.0G 12K 2.0G 1% /tmp
  8. # df -i /tmp/
  9. Filesystem Inodes IUsed IFree IUse% Mounted on
  10. tmpfs 2041621 7 2041614 1% /tmp
  11. # mount | grep /tmp
  12. tmpfs on /tmp type tmpfs (rw,size=2048M)
  13.  
  14. # cd /var/lib/mysql ; ls -lR | grep -c ".frm$"
  15. 1876765
  16.  
  17. # cd /var/lib/mysql ; ls -lR | grep -c ".frm$"
  18. 49514
  19.  
  20. # ./backup.sh
  21. Backing up database number: 1
  22. Completed in: 0.016
  23. Backing up database number: 2
  24. Completed in: 0.078
  25. Backing up database number: 3
  26. Completed in: 0.074
  27. Backing up database number: 4
  28. Completed in: 0.068
  29. Backing up database number: 5
  30. Completed in: 0.071
  31. Backing up database number: 6
  32. Completed in: 0.060
  33. Backing up database number: 7
  34. Completed in: 0.067
  35. Backing up database number: 8
  36. Completed in: 0.070
  37. Backing up database number: 9
  38. Completed in: 0.065
  39. .....
  40. Backing up database number: 107
  41. Completed in: 10.749
  42. Backing up database number: 108
  43. Completed in: 12.125
  44. Backing up database number: 109
  45. Completed in: 11.313
  46. Backing up database number: 110
  47. Completed in: 11.572
  48. Backing up database number: 111
  49. Completed in: 11.371
  50. .....
  51.  
  52. #!/usr/bin/env bash
  53.  
  54. DATA_DIR="/tmp/mysqlbackup"
  55. LOCKFILE=/tmp/backup.lock
  56. NOW=$(date +%Y%m%d)
  57. COUNT=1
  58.  
  59. if [ -f "$LOCKFILE" ]; then
  60. echo "$(basename $0) is already running: PID $(cat $LOCKFILE)"
  61. exit 0
  62.  
  63. else
  64.  
  65. echo $$ > $LOCKFILE
  66.  
  67. if [ ! -d $DATA_DIR/$NOW ]; then
  68. mkdir -m 700 -p $DATA_DIR/$NOW
  69. fi
  70.  
  71. while read DB; do
  72.  
  73. (( COUNT++ ))
  74.  
  75. echo "Backing up database number: $COUNT"
  76.  
  77. START=$(date +%s.%N)
  78.  
  79. mydumper -e -o $DATA_DIR/$NOW/$DB -B "$DB"
  80.  
  81. ELAPSED=$(date +%s.%N)
  82.  
  83. printf "Completed in: %.3Fn" $(echo $ELAPSED - $START | bc)
  84.  
  85. done <<< "$(mysql -A -B -N -e "SHOW DATABASES" | egrep -v '(mysql|*_schema|log)')"
  86.  
  87. echo "Removing backup dir...";
  88.  
  89. rm -rf $DATA_DIR/$NOW
  90.  
  91. rm -f $LOCKFILE
  92.  
  93. exit 0
  94.  
  95. fi
  96.  
  97. mysql> show create table information_schema.tablesG
  98. *************************** 1. row ***************************
  99. Table: TABLES
  100. Create Table: CREATE TEMPORARY TABLE `TABLES` (
  101. `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
  102. `TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
  103. `TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
  104. `TABLE_TYPE` varchar(64) NOT NULL DEFAULT '',
  105. `ENGINE` varchar(64) DEFAULT NULL,
  106. `VERSION` bigint(21) unsigned DEFAULT NULL,
  107. `ROW_FORMAT` varchar(10) DEFAULT NULL,
  108. `TABLE_ROWS` bigint(21) unsigned DEFAULT NULL,
  109. `AVG_ROW_LENGTH` bigint(21) unsigned DEFAULT NULL,
  110. `DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
  111. `MAX_DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
  112. `INDEX_LENGTH` bigint(21) unsigned DEFAULT NULL,
  113. `DATA_FREE` bigint(21) unsigned DEFAULT NULL,
  114. `AUTO_INCREMENT` bigint(21) unsigned DEFAULT NULL,
  115. `CREATE_TIME` datetime DEFAULT NULL,
  116. `UPDATE_TIME` datetime DEFAULT NULL,
  117. `CHECK_TIME` datetime DEFAULT NULL,
  118. `TABLE_COLLATION` varchar(32) DEFAULT NULL,
  119. `CHECKSUM` bigint(21) unsigned DEFAULT NULL,
  120. `CREATE_OPTIONS` varchar(255) DEFAULT NULL,
  121. `TABLE_COMMENT` varchar(2048) NOT NULL DEFAULT ''
  122. ) ENGINE=MEMORY DEFAULT CHARSET=utf8
  123. 1 row in set (0.00 sec)
  124.  
  125. mysql>
  126.  
  127. DROP TABLE IF EXISTS mysql.dbtbcount;
  128. CREATE TABLE mysql.dbtbcount
  129. (
  130. table_schema VARCHAR(64) NOT NULL,
  131. table_count INT NOT NULL DEFAULT 0,
  132. PRIMARY KEY (table_schema)
  133. ) ENGINE=MEMORY;
  134. INSERT INTO mysql.dbtbcount (table_schema)
  135. SELECT schema_name FROM information_schema.schemata
  136. WHERE schema_name NOT IN ('information_schema','mysql');
  137. INSERT INTO mysql.dbtbcount (table_schema)
  138. SELECT table_schema FROM information_schema.tables
  139. ON DUPLICATE KEY UPDATE table_count = table_count + 1;
  140. SELECT * FROM mysql.dbtbcount;
  141. SELECT COUNT(1) DistinctDBs FROM mysql.dbtbcount WHERE table_count > 0;
  142.  
  143. BACKUP_FOLDER=/any/path/but/tmp
  144.  
  145. MYSQL_HOST=localhost
  146. MYSQL_USER=root
  147. MYSQL_PASS=rootpassword
  148. MYSQL_CONN="-h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS}"
  149.  
  150. SQLSTMT="SELECT db FROM (SELECT table_schema db,SUM(data_length) datasize"
  151. SQLSTMT-"${SQLSTMT} FROM information_schema.tables"
  152. SQLSTMT-"${SQLSTMT} WHERE table_schema NOT ('mysql','log')"
  153. SQLSTMT-"${SQLSTMT} AND RIGHT(table_schema,7)<>'_schema'"
  154. SQLSTMT-"${SQLSTMT} GROUP BY table_schema) A"
  155. SQLSTMT-"${SQLSTMT} ORDER BY datasize DESC"
  156. mysql ${MYSQL_CONN} -ANe"${SQLSTMT}" > /tmp/ListOfDatabases.txt
  157.  
  158. COMMIT_COUNT=0
  159. COMMIT_LIMIT=25
  160. MYSQLDUMP_OPTIONS="--hex-blob --routines --triggers"
  161. for DB in `cat /tmp/ListOfDatabases.txt`
  162. do
  163. BACKUP_FILE=${BACKUP_FOLDER}/${DB}.sql.gz
  164. mysqldump ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS} ${DB} | gzip > ${BACKUP_FILE} &
  165. (( COMMIT_COUNT++ ))
  166. if [ ${COMMIT_COUNT} -eq ${COMMIT_LIMIT} ]
  167. then
  168. COMMIT_COUNT=0
  169. wait
  170. fi
  171. done
  172. if [ ${COMMIT_COUNT} -gt 0 ]
  173. then
  174. wait
  175. fi
  176.  
  177. BACKUP_FOLDER=/any/path/but/tmp
  178.  
  179. MYSQL_HOST=localhost
  180. MYSQL_USER=root
  181. MYSQL_PASS=rootpassword
  182. MYSQL_CONN="-h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS}"
  183.  
  184. SQLSTMT-"${SQLSTMT} SELECT schema_name FROM information_schema.schemata"
  185. SQLSTMT-"${SQLSTMT} WHERE schema_name NOT ('mysql','log')"
  186. SQLSTMT-"${SQLSTMT} AND RIGHT(schema_name ,7)<>'_schema'"
  187.  
  188. COMMIT_COUNT=0
  189. COMMIT_LIMIT=25
  190. MYSQLDUMP_OPTIONS="--hex-blob --routines --triggers"
  191. for DB in `cat /tmp/ListOfDatabases.txt`
  192. do
  193. BACKUP_FILE=${BACKUP_FOLDER}/${DB}.sql.gz
  194. mysqldump ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS} ${DB} | gzip > ${BACKUP_FILE} &
  195. (( COMMIT_COUNT++ ))
  196. if [ ${COMMIT_COUNT} -eq ${COMMIT_LIMIT} ]
  197. then
  198. COMMIT_COUNT=0
  199. wait
  200. fi
  201. done
  202. if [ ${COMMIT_COUNT} -gt 0 ]
  203. then
  204. wait
  205. fi
Add Comment
Please, Sign In to add comment