all

MySQLでバイナリログを設定する

MySQL 説明 [#k11817c7] mysqldumpや物理ファイルバックアップでロールバックする以外に、ロールフォワードする場合は下記バイナリログの出力設定が必要です。 設定内容 [#bc3106f7] # vi /etc/my.cnf — [mysqld] log-bin=mysql-bin expire_logs_days = 7 — 期限は運用に併せて。 # /etc/init.d/mysqld restart バイナリログの期限変更(再起動不要) [#h6eb8151] MySQLの公式サイトにもオンライン変更yesとなっているので、setで変更可能です。

mysql -u root -p mysql> SET GLOBAL expire_logs_days = 5; Query OK, 0 rows affected (0.06 sec) mysql> SHOW GLOBAL VARIABLES like 'expire_logs_days'; +——————+——-+ | Variable_name | Value | +——————+——-+ | expire_logs_days | 5 | +——————+——-+ 1 row in set (0.00 sec) 参考URL:http://d.hatena.ne.jp/omiyan/20110128/p1

mysqldump時にバイナリログをローテーションする [#w51f19f6] –flush-logsオプションをつけることでローテーションされます。 # mysqldump -u root -p –flush-logs –single-transaction –order-by-primary –events -A > mysqldump.

One minute to read

MySQLでよく使うmysqldumpのオプション

MySQL よく使うオプション一覧 [#oe1ca594] |オプション|短縮|値| |–user |-u|ログインユーザー| | –password|-p|ログインパスワード| |–host|-h|ホスト名 ※省略 localhost| |–port|-P|ポート ※省略 3306| |–verbose|-v|動作の詳細| ||-t|CREATE TABLE,DROP TABLE文を省略| 対象 [#d9b1dd32] |オプション|短縮|値| |–all-databases|-A|全データベース| |–database|-B|特定のデータベース 後にデータベースを指定| トランザクション/ロック [#xb485979] |–single-transaction||シングルトランザクションでdumpを取得できるので、一貫性が取れる| |–lock-all-tables|-x|全テーブルをロックする| その他 [#k62118a5] |–ignore-table=DB名.テーブル名|特定のテーブルを除外してdump| |–order-by-primary|プライマリキーでソート。dumpには時間がかかるようになるが、リストアが高速化する| |–hex-blob|これを指定しないと default-character-set がSJIS系の場合エスケープ処理に失敗し、バイナリデータが壊れてしまう場合があります。| バイナリログを使用している場合 [#h95a8c68] |–flush-logs|dumpを実行する前にログを書き込む。| 使い方例 [#hed75dec] mysqldump -u root -p -v –single-transaction -A > mysqldump.all.sql 全データベースをシングルトランザクションでdump取得 mysqldump -u root -p -v –single-transaciton -B testdatabase > testdatabase.sql 特定のデータベースをシングルトランザクションでdump取得 mysqldump -u root -p -v –single-transaction -A | gzip > mysqldump.
One minute to read

MySQLで使えるシステムコマンド

MySQL 概要 [#x29cd3c2] MySQLで使えるシステムコマンドのTipsです。 一覧 [#w6695245] hostname [#te21f988] mysql> system hostname b1c8a78553a7 ログに保存 [#t00ded06] mysql> tee test.log Logging to file 'test.log' mysql> show databases; +——————–+ | Database | +——————–+ | information_schema | | mysql | | performance_schema | | test | +——————–+ 4 rows in set (0.00 sec) mysql> notee; Outfile disabled. mysql> quit Bye root@b1c8a78553a7:/# cat test.log mysql> show databases; +——————–+ | Database | +——————–+ | information_schema | | mysql | | performance_schema | | test | +——————–+ 4 rows in set (0.
One minute to read

MySQLで特定のカラムが存在するか確認する

#author(“2018-08-28T02:12:03+00:00”,“default:kazuma”,“kazuma”) MySQL SQL文 [#n5d3061a] select table_name from information_schema.columns where column_name = '確認したいカラム' and table_schema = '対象データベース'; 実行例 [#x30fee75] mysql> select table_name from information_schema.columns where column_name = 'user' and table_schema = 'mysql'; +————–+ | table_name | +————–+ | columns_priv | | db | | procs_priv | | proxies_priv | | tables_priv | | user | +————–+ 6 rows in set (0.00 sec)
One minute to read

MySQLのibdataファイルを分割する方法

MySQL 説明 [#p61cf9b1] できれば運用開始前に設定したい内容ですが、運用後にもメンテナンスを設けることでテーブルごとにibdataファイルを作成するように変更することが可能です。 その際の手順です。 手順 [#a16382ec] +mysqlディレクトリをバックアップします。 +mysqldumpにてInnoDBのdumpを取得します。 +mysqlにて対象のデータベースをdropします。 +ibdataとinnodb_logfileを削除します。 +my.cnfで下記を追加します。 +サーバを再起動します。 +ダンプ ファイルをインポートします。 以上でデータベース名のディレクトリ配下にfrmファイルとは別に、テーブルごとにibdファイルが作成されます。 my.cnfへ追記する項目 mysqldセクション以下に追記してください。 [#k300482f] [mysqld] innodb_file_per_table = 1
One minute to read

MySQLのrootパスワードがわからなくなってしまった場合の対処

MySQL 説明 [#c777a5a0] mysqlのrootパスワードがわからなくなってしまった場合、サーバーへサーバーのrootユーザーでログインが出来る場合は、mysqlのrootユーザーのパスワードを変更することが可能です。 手順 [#v723ba1c] # service mysqld stop # mysqld_safe –skip-grant-tables & # mysql mysql> use mysql mysql> update user set password=password('パスワード') where user='root'; mysql> flush privileges; # service mysqld stop # service mysqld start 参考URL:http://liginc.co.jp/web/programming/mysql/87393
One minute to read

MySQLのslowlogをローテートする

MySQL 手動でローテートする [#n42d43cd] FLUSH LOGSでバイナリログ、クエリログ、スロークエリログをローテート出来ます。 MySQL5.5以降でれば、スロークエリログのみをローテート出来ます。 手順 [#k05a453d] mysql> Server version: 5.5.** MySQL Community Server (GPL) # cd /var/lib/mysql # mv slow.log slow.log.date +%Y%m%d # mysql mysql> flush slow logs; # ls <– 新しくslow.logファイルができていることを確認する # lsof | grep slow.log <– slow.logファイルがlsofで表示されることを確認する(日付付きじゃない方のファイル) 参考URL [#ue533d0a] http://nippondanji.blogspot.jp/2010/04/mysqlmysql-554.html
One minute to read

MySQLのインストールと初期設定

MySQL MySQLのインストール [#ma91a127] # yum install mysql-server # /etc/init.d/mysqld start # chkconfig mysqld on <– サーバー起動時に自動起動 # chkconfig mysqld –list <– 自動起動の設定確認 rootのパスワード設定 [#y25153b8] 初期値ではrootにパスワードが設定されていないため、「mysql」と入力するとログインできてしまいます。 下記コマンドを入力して、MySQLのrootにパスワードを設定してください。 パターン1 [#x7954a98] # mysql mysql>SET PASSWORD FOR root@localhost=PASSWORD('hoge'); Query, OK mysql>exit # mysql →ログインできなければOKです。 # mysql -u root -p パスワードを入力 mysql> 上記プロンプトが表示されたらOKです。 パターン2 [#i2e17243] mysqladmin -u root password New Password:********* Confirm Password:******** 不要なテストデータベースの削除 [#le452b25] # mysql -u root -p パスワードを入力 mysql> show databases; mysql> use test; mysql> show tables; <–テーブルがなにもないことを確認する。 mysql> drop database test; mysql> show databases; パスワードが設定されていないユーザーの削除 [#yf0f99c7] # mysql -u root -p mysql> use mysql; <– mysqlの基本が設定されているDBを使用するよう実行 mysql> select user,from from user; <– userテーブルで作成されているユーザーを確認し、passwordフィールドが空のユーザーを確認する。 mysql> delete from user where password = ''; <–userテーブルのpasswordフィールドが空のカラムを削除するsql mysql> select user,password from user; <–passwordフィールドが空のユーザーが削除されていることを確認して削除されていればOK。
One minute to read

MySQLのインストール後のこれだけは記述しておけっていう値

MySQL my.cnf [#y7581861] 下記パラメータについては、最低限やっておいた方が良いかと思います。 値はご自身のサーバーにあわせていれてみてください。 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # character set #default-character-set = utf8 <—注意:mysql5.5の場合に[mysql]項目の下に追加する mysql5.1系では使用しない。 skip-character-set-client-handshake character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 # logs long_query_time=10 #log-slow-queries=/var/log/mysql_slow.log <— mysql5.1系では記述が変更になっているので下の記述を使用する。また、事前にmysql_slow.logを作成して権限をmysql:myqlにしておく必要がある。 slow_query_log_file=/var/log/mysql_slow.log log-error=/var/log/mysql_error.log log-warnings=1 # MyISAM key_buffer_size=8M thread_cache_size=16 query_cache_limit=5M query_cache_min_res_unit=4k query_cache_size=8M query_cache_type=1 read_buffer_size=8M join_buffer_size=8M read_rnd_buffer_size=8M # InnoDB innodb_buffer_pool_size=1024M innodb_additional_mem_pool_size=20M innodb_log_file_size=512M innodb_log_buffer_size=16M innodb_file_per_table = 1 sort_buffer_size=8M [mysqld_safe] log-error=/var/log/mysqld.
One minute to read