2018年3月14日水曜日

MySQLのチートシート

だから私はいつか私がすべきだと思ったように投稿した。 私はまだMySQLと関連するフォークと一緒に働いていてとても忙しく、私が思うようにブログを出していませんでした。 だから、私はそれに取り組むでしょう。 

先日、私はそれが一般的なVIチートシートリストだったので、私が愛していたウェブサイトを思い出しました。 あなたが知っている構文、あなたはそれが必要であることを知っていますが、それが正しいまで3回タイプします。 それはあなたがそれを見て右に入力されると、私はすでにそれを書いたと思った。 

だから私は、一般的なMySQLコマンドの単純なリストではなく、毎月50回タイプするか、手の後ろのように知っているべきですが、クライアントが私たちの肩を見ているときを忘れてしまいます。 
まずは.. 
私たちは新しいMySQL 5.7.6+サーバを設定し、ログインします。 
パスワードを変更する必要があります。 しかし、それはパスを設定しないでユーザーを変更することです。 
パスワードをそのままクリアテキストで読む方法を知りたい。 

ALTER USER 
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'; 
パスワードを設定する 
SET PASSWORD FOR 'bob''@'localhost' = PASSWORD('cleartext password'); 

パージバイナリログ 
PURGE BINARY LOGS TO 'mysql-bin.010';
PURGE BINARY LOGS BEFORE '2008-04-02 00:00:00
PURGE BINARY LOGS BEFORE NOW() - interval 3 DAY;

MySQLダンプ 
# COMPACT WILL REMOVE DROP STATEMENTS
mysqldump --events --master-data=2 --routines --triggers --compact --all-databases > db.sql
mysqldump --events --master-data=2 --routines --triggers --all-databases > NAME.sql
mysqldump --opt --routines --triggers dbname > dbname.sql
mysqldump --opt --routines --triggers --no-create-info joomla jforms > dataonly.sql 

外部キーを一瞬オフにする 
SET GLOBAL foreign_key_checks=0; 



助成金をスキップする 
/usr/bin/mysqld_safe --defaults-file=/etc/mysql/my.cnf --skip-grant-tables
vi /etc/mysql/my.cnf
[mysqld]
skip-grant-tables


BinLogのレビュー 
--base64-output = DECODE-ROWS&--verbose 
mysqlbinlog --defaults-file=/home/anothermysqldba/.my.cnf --base64-output=DECODE-ROWS --verbose binlog.005862 > 005862.sql

MYSQLの安全なクライアント 
mysql_config_editor print --all
mysql_config_editor set --user=mysql --password --login-path=localhost --host=localhost
mysql --login-path=localhost -e 'SELECT NOW()';

スワップ 
sudo swapoff -a
To set the new value to 10: echo 10 | sudo tee /proc/sys/vm/swappiness
sudo swapon -a 

情報スキーマが遅い場合 
set global innodb_stats_on_metadata=0; 

AWS変数 
CALL mysql.rds_show_configuration;
> call mysql.rds_set_configuration('binlog retention hours', 24);
> call mysql.rds_set_configuration('slow_launch_time', 2);

列名が入っているテーブルを見つける 
SELECT TABLE_SCHEMA , TABLE_NAME , COLUMN_NAME FROM information_schema.COLUMNS WHERE COLUMN_NAME = 'fieldname' ; 
クライアントはTableAにあると言っていますが、50のデータベースがあります。 
SELECT TABLE_SCHEMA , TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = 'TableA' ; 

奴隷労働者を調整する 
Select @@slave_parallel_workers;
Stop Slave; Set GLOBAL slave_parallel_workers=5; Start Slave;

MySQLマルチ 
5.6>
To start both : mysqld_multi start 1,2
To check on status of both: mysqld_multi report 1,2
To check on status or other options you can use just one

5.7<
[mysqld1] BECOMES [mysqld@mysqld1]
systemctl start mysqld@mysqld1
systemctl start mysqld@mysqld2
systemctl start mysqld@mysqld3
systemctl start mysqld@mysqld4 
MySQLアップグレードシステムテーブルのみ 
mysql_upgrade --defaults-file=/home/ anothermysqldba /.my.cnf --upgrade-system-tables 

スキップ・レプリケーション・エラー 
STOP SLAVE; SET GLOBAL sql_slave_skip_counter =1; START SLAVE; SELECT SLEEP(1); SHOW SLAVE STATUS\G