DataBase のバックアップ差分(No.13) - アールメカブ

アールメカブ


DataBase のバックアップ差分(No.13)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
データベースの備忘録

[[旧メモ>DBFromOldHtml]]を移植の予定。

#contents


MySQL 
-----
*DBの修復 [#ea0cd5c8]

 ERROR 1577 (HY000) at line 1: Cannot proceed because system 
  tables used by Event Scheduler were found damaged at server start

 $ mysql_upgrade -uroot -p
 Looking for 'mysql' as: mysql
 Looking for 'mysqlcheck' as: mysqlcheck 
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock' 
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock' 

 Running 'mysql_fix_privilege_tables'...
 OK
 Could not create the upgrade info file
   '/var/lib/mysql/mysql_upgrade_info' in the MySQL Servers datadir,
   errno: 13


* DBのパスワード [#wc56cdfa]

ほかのmysqlサーバからデータを移行した場合 userテーブルが書き換えてしまい以下のような事態が生じたら

 [sudo] password for ishida: 
 * Stopping MySQL database server mysqld
   ...fail!
 * Starting MySQL database server mysqld
   ...done.

debian-sys-maitはデフォルトのメンテナンスユーザで Debianシステム上のメンテナンススクリプトで使われてます。

 sudo grep password /etc/mysql/debian.cnf 
 password = ************

  GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'pswd' WITH GRANT OPTION;
  FLUSH PRIVILEGES;

* DB 全体のバックアップ [#lc5b5dd7]
[[ここ:http://nobuit.blog56.fc2.com/blog-entry-79.html]]など参考

- バックアップ

 $ mysqldump --user=mysql --password --socket -x ?F --all-databases >
   /var/tmp/sampledb.dmp

- リストア

 $ mysql < /var/tmp/sampledb.dmp



* データベースのバックアップ [#j804cb54]

 # mysqldump -u** -p** -C -Q -e -a dbname > back.sql
 # mysql -u** -p** --default-character-set=utf8
    dbname < /home/user/back.sql



* 表のバックアップ [#k544e011]

 # mysqldump -u root -p --database mydb --tables mytbl > mydb_mytbl.sql

mydb_mytable.sqlというファイルができている.
エディタで中が見れる。復元は

 # mysql -u root -p --database mydb < mydb_mytbl.sql
 
* AUTO_INCREMENT の値 [#l9671742]

INSERT INTO TABLES () VALUES(); の直後に

 mysql> SELECT LAST_INSERT_ID();

PHPなら

 $dbc=mysql_connect("localhost","root","")
  or die("MySQL接続失敗 :".mysql_error());
 
  $res= mysql_query("SELECT LAST_INSERT_ID()", $dbc)
      or die("ID取得失敗 :".mysql_error());
   $dat=mysql_fetch_row($res);
   print_r($dat);
   $insert_id=$dat[0];
   printf("最後に挿入されたレコードのIDは、%d<br />\n",  
   $insert_id);

*[[MySQL_install]] [#db23cde3]
*[[MySQL_ファイルからDB作成]] [#md1ff91a]
*[[MySQLチューニング関係]] [#n54176c4]
*[[MySQL全文検索]] [#q01b208b]

JAVA
------------
* [[DB_JDBC]] Java [#ace2b0c3]