# データベース周り ## mysqlクライアント ### つなぎ方 ``` mysql -h HOSTNAME -u USERNAME -P 3306 -p ``` ### データベース一覧 ``` mysql> show schemas; +--------------------+ | Database | +--------------------+ | information_schema | | here_songs | +--------------------+ ``` ### テーブル一覧 ``` mysql> show tables; +----------------------+ | Tables_in_here_songs | +----------------------+ | credentials | | schema_migrations | | sessions | | users | | users_sessions | +----------------------+ ``` ### テーブルのスキーマをしりたい時 ``` mysql< desc TABLE_NAME +-----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | title | varchar(128) | NO | | NULL | | | public_fg | tinyint(1) | NO | | NULL | | | closed_fg | tinyint(1) | NO | | NULL | | | price | int(10) unsigned | NO | | NULL | | +-----------+------------------+------+-----+---------+----------------+ ``` ### インデックスを確認する ``` show index from TABLE_NAME; ``` ## mysqldump 本番DBを弄ってしくじったときにしっかり復旧できるようにしよう [mysqldumpまとめ](https://qiita.com/PlanetMeron/items/3a41e14607a65bc9b60c) ### バックアップ ``` mysqldump -p -h HOSTNAME -u USERNAME DB_NAME > export.sql ``` もし、`Can't exxecute`的なエラーがでて、`statistics`という文字があれば、`--column-statistics=0`のオプションを付けると良さげ ### 全部バックアップしたいとき ``` mysqldump -p -h HOSTNAME -u USERNAME -A -n > export.sql ``` ### 復元 ``` mysql -p -h HOST_NAME -u USER_NAME DB_NAME < export.sql ``` ## スロークエリ スロークエリを使うことで、遅いクエリを発見することができる。 おそらくインターンでも使うでしょう。 ### 設定方法 `my.conf` を書き換える。 `my.conf`は大体この辺にあるらしい - `/etc/my.cnf` - `/etc/mysql/my.cnf` - `/usr/local/etc/my.cnf` - `~/.my.cnf` ``` [mysqld] slow_query_log=ON long_query_time = 0 slow_query_log_file = /tmp/mysql-slow.sql ``` long_query_time=0にすることでとりえあず全部のログを出す。 その後再起動 ``` sudo service mysqld restart ``` 反映されている以下確認する ``` mysql> show variables like 'slow%'; mysqk> show variables like 'long%'; ``` ### ログを解析する 生ログを解析するのはしんどいので、人間にもわかるようにしてくれる[pt-query-digest](https://www.percona.com/doc/percona-toolkit/2.2/pt-query-digest.html)を使う。 #### インストール ``` wget https://github.com/percona/percona-toolkit/archive/3.0.5-test.tar.gz tar zxvf 3.0.5-test.tar.gz ./percona-toolkit-3.0.5-test/bin/pt-query-digest --version sudo mv ./percona-toolkit-3.0.5-test/bin/pt-query-digest /usr/local/bin/pt-query-digest ``` #### 使い方 ``` pt-query-digest /tmp/mysql-slow.sql ``` [pt-query-digestを使って遅いクエリーを発見する](https://thinkit.co.jp/article/9617) ## my.conf ### dockerのmysqlのmy.confをいじりたいとき [Dockerの公式MySQLイメージの使い方を徹底的に解説するよ](http://dqn.sakusakutto.jp/2015/10/docker_mysqld_tutorial.html) ### 設定項目 #### コネクション数 (OS側の設定にも治す) ``` [mysqld] max_connections=10000 ``` [maxconnection を増やす](https://gist.github.com/south37/d4a5a8158f49e067237c17d13ecab12a#maxconnection-%E3%82%92%E5%A2%97%E3%82%84%E3%81%99) #### 文字コード ``` [mysqld] character-set-server=utf8mb4 [client] default-character-set=utf8mb4 ``` **確認** ``` show variables like "chara%"; ```
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.