AWSのRDSでMySQLのdumpをする方法

AWSのRDSでMySQLのdumpをする方法。
スナップショットではなくて実データが欲しいときありますよね。
サーバー移転時とか。

スナップショットはRDSの管理画面から行えますが、dumpをする場合は下記のように行えます。

EC2にSSHでログインして下記を実行

mysqldump -h zeroone.ieecae89jne3n2.ap-northeast-1.rds.amazonaws.com -u zero1 -p zero1 > ./dump.sql

そうするとEC2側にdumpファイルが作成されるので、それをFTPでダウンロードする。

これでOK

MySQLのsql_modeについて

またまた移転時のネタ

移転後の動作チェックでINSERT文で下記のエラーが発生

Incorrect integer value: ” ~~~
こんなSQLがNGです。
INSERT INTO table (id, value) VALUES(”, ‘OK’);

auto_incrementのカラムに”を指定している部分でのエラーのようです。
色々調べてみるとsql_modeの設定が影響しているようです。

my.cnfかSQLで設定調整ができるようです。

my.cnfはroot権限、SQLでもMySQLのroot権限が必要です。

MySQLにroot権限でログインします。

$ mysql -u root -p
password:
> use データベース名

設定状況を確認します。

> SHOW GLOBAL VARIABLES LIKE 'sql_mode';

設定をします。

> SET GLOBAL sql_mode=NO_ENGINE_SUBSTITUTION;

これでINSERTでエラーがでなくなりました。

MySQLのリストア

MySQLのデータをリストア

$ mysql -u ユーザー名 -pパスワード名 --default-character-set=文字コード データベース名 < バックアップファイル名

※-pとパスワード名は間をあけない。

gzで圧縮している場合はパイプさせる。

zcat SQLファイル.gz | mysql -u ユーザー名 -pパスワード名 --default-character-set=文字コード データベース名

パスワードの警告がでますけど、処理は続行されます。

PHPのショートタグ

サーバー移転時にショートタグで書いているプログラムがたくさんあった。

ショートタグ↓こんなやつ

<? for($i=0; $i<10; $i++){ .... } ?>

全部修正は無理なのでショートタグを許可しちゃいます。

.htaccessに下記を記載

php_flag short_open_tag on

PostgreSQLのoid使用時の注意

PostgreSQLのoid使用時の注意

サーバー移転時の話
7.4→9.2にpsqlもバージョンアップ

SELECT時にoidを使っていたものがカラムがないというエラーが出ました。

マニュアルを調べてみるとoidを使う場合はテーブル作成時に指定しないと駄目らしい。
バージョン8.1以降からデフォルトでのoidは無効のようです。

下記のようにテーブル作成します。

create table 'テーブル名' (id int) with oids;

今回はoid使わなくてもOKなところだったのでプログラムを修正しました。

解凍ソフトで解凍できなかった場合に試したこと

解凍ソフトで解凍できなかった場合に試したこと

私は下記の解凍ソフトで使い分けをしている。

通常:Lhaz
Mac文字化け用:CubeIce

gzで圧縮されたDBのバックアップデータを解凍しようとした時に
上記のソフトでは解凍ができなかった。
「書庫が壊れています」とか「移動できませんんでした」など

解凍後のデータ容量が4GB近くあるので、それで駄目なのかな~っと

そこで新たな解凍ソフトを導入

7-Zip
https://sevenzip.osdn.jp/

こちらをインストールして試してみたら成功!

ソフトによってできる、できないがあるんだね~・・・

phpMyAdminでユーザーの新規追加で困った

phpMyAdminでユーザーの新規追加をしようとしてエラー

phpMyAdmin:4.7.6
MySQL:5.7

困った困った。

#1819 – Your password does not satisfy the current policy requirements

「パスワードが現在のポリシー要件を満たしていない」ということです。
英数字、大文字、小文字、記号を含めたパスワードにすると解決です。

phpMyAdminの「パスワードを生成する」のボタンでは上記ポリシーをクリアできてないので注意ですね。

SQLで直接実行するとユーザーの追加ができるので、今回はそちらで対応

CREATE USER 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';

ユーザー追加後にDBを追加したり、ユーザーの編集で接続するDBを指定したりしましょう。

rootのパスワードを忘れた場合

rootのパスワードを忘れた!

MySQLを終了

# kill `cat /var/run/mysqld/mysqld.pid`

MySQLを設定テーブルをスキップさせて起動

# /usr/libexec/mysqld --skip-grant-tables &

ログイン(パスワードなしでログインできる)

# mysql -u root mysql

パスワードを再設定

> UPDATE user SET Password=PASSWORD('パスワード') WHERE User='root';
> FLUSH PRIVILEGES;
> \q

MySQLを終了

# kill `cat /var/run/mysqld/mysqld.pid`

通常起動

# /etc/rc.d/init.d/mysqld start

非同期通信$.ajaxの今と昔

非同期通信で色々調べていたら出てきたやつ

$.ajax({
	url:"http://xxxx/a.php",
	type:"GET",
	dataType:"json",
	success: function(data){
		console.log("OK");
	},
	error: function(XMLHttpRequest, textStatus, errorThrown) {
		console.log("ERROR");
	},
	complate: function(data){
		consolo.log("END");
	}
});

上記これはjQueryのバージョンが1.5以前の古いタイプ

新しいタイプは下記

$.ajax({
	url:"http://xxxx/b.php",
	type:"GET",
	dataType:"json",
})
.done(function(data){
	console.log("OK");
})
.fail(function(jqXHR, textStatus, errorThrown){
	console.log("ERROR");
})
.always(function(){
	console.log("END");
});

メモメモ

PostgreSQLのバックアップを取ってみる

PostgreSQLのバックアップを取ってみる

pg_dumpで実行する場合パスワードなしだと下記のエラーが出る
たぶんpg_hba.confでローカルならパスワードなしOKって設定ができると思いますが…

pg_dump: [archiver(db)] connection to database “hogehoge” failed: fe_sendauth: no password supplied

オプション -w でもスルーできない場合に困る。
cronで実行したいときとかにね。

そのときは「.pgpass」ファイルで回避可能ですよ。

上記ファイル名でファイルを作成し、パーミッションを600にします。
そうしないとエラーで怒られます。

.pgpassの中身は下記

ホスト名:ポート:DB名:ユーザ名:パスワード

パスワード以外はワイルドカード(*)のしてもありです。

ファイル作成後に下記のように実行するとOK

$ pg_dump -w -c DB名 > バックアップ.sql