記事:
記事
環境:
現象:
原因:
それぞれの MySQL Server は、サーバー独自のバイナリロギング形式のみを設定できます (binlog_format がグローバルスコープまたはセッションスコープのいずれで設定される場合にも当てはまります)。これは、レプリケーションマスターのロギング形式を変更しても、スレーブがそのロギング形式を一致するように変更するわけではないことを意味しています。(STATEMENT モードを使用中の場合、binlog_format システム変数はレプリケーションされず、MIXED または ROW ロギングモードを使用中の場合、レプリケーションされますが、スレーブによって無視されます。)レプリケーションの進行中にマスター上のバイナリロギング形式を変更したり、スレーブ上でそれを変更しなかったりすると、予期しない結果を招いたり、レプリケーションの失敗を招くことがあります。
対策:
wait_connection() { local db_host=${1:-"127.0.0.1"} local db_user='root' local max_wait_sec=180 # AWS premium support answers local wait_sec=10 local mysqladmin=/usr/bin/mysqladmin local start_sec=$SECONDS local end_sec=$SECONDS if [ -f "$mysqladmin" ]; then while [ $(( $end_sec - $start_sec )) -le $max_wait_sec ]; do $mysqladmin ping -u $db_user -h $db_host > /dev/null 2>&1 if [ $? == 0 ]; then break fi sleep $wait_sec end_sec=$SECONDS done else sleep $max_wait_sec fi return 0 }
サーバレス(Lambda等)は同時に多数アクセスされると、DBにその都度接続するため、コネクション数がDBの最大コネクションを超える事がある。
Lambda等のアプリ側で、コネクションプールや自動フェイルオーバー機能を持ってない場合等。
profile=example region=ap-northeast-1 aws rds describe-db-engine-versions --engine mysql --engine-version 8.0.34 \ --query 'DBEngineVersions[0].{SupportsCertificateRotationWithoutRestart:SupportsCertificateRotationWithoutRestart,SupportedCACertificateIdentifiers:SupportedCACertificateIdentifiers}' \ --profile $profile \ --region $region { "SupportsCertificateRotationWithoutRestart": true, "SupportedCACertificateIdentifiers": [ "rds-ca-2019", "rds-ca-ecc384-g1", "rds-ca-rsa4096-g1", "rds-ca-rsa2048-g1" ] }
aws --version aws-cli/1.18.21 Python/2.7.15 Linux/4.4.0-18362-Microsoft botocore/1.15.21
profile=example region=ap-northeast-1 db_instance_id=db01 aws rds modify-db-instance \ --db-instance-identifier $db_instance_id \ --ca-certificate-identifier rds-ca-2019 \ --no-certificate-rotation-restart \ --apply-immediately \ --profile $profile \ --region $region
aws rds describe-orderable-db-instance-options \ --engine mysql \ --engine-version 5.6.44 \ --vpc \ --profile example \ --region ap-northeast-1 > rds.mysql.5.6.44.json cat rds.mysql.5.6.44.json | jq -r '.OrderableDBInstanceOptions[] | [.DBInstanceClass, .StorageType, .SupportsStorageAutoscaling] | @tsv' | sort
storage=30 echo $(( ($storage / 1000) * 1000 + 1000 )) 1000
記事:
VPC上のRDSは名前解決すると、プライベートIPになるため、VPC以外からアクセスできない。
ElasticIPをVPC上に取得し、それをRDSに付与する事で外部からでもアクセスできる。
Slave_IO_Running: Connecting Slave_SQL_Running: Yes
同期の確認:
記事:
Management Consoleで任意の値に変更可能
t1.micro: 34 connections ($0.035) m1.small: 150 connections ($0.115) m1.large: 640 connections ($0.455) m1.xlarge: 1263 connections ($0.920) m2.xlarge: 1441 connections ($0.655) m2.2xlarge: 2900 connections ($1.315) m2.4xlarge: 5816 connections ($2.630)
/usr/bin/mysqldump -uUSER -pPASS \ --single-transaction --default-character-set=utf8 --hex-blob \ --all-databases --skip-lock-tables \ -h localhost > /path/to/mysql.`date +%Y%m%d`.sql
arn:aws:rds:<region>:<account number>:<resoucetype>:<name>
arn:aws:rds:us-west-2:001234567890:db:mysql-db
arn:aws:rds:us-east-1:001234567890:snapshot:my-snapshot2
arn:aws:rds:ap-northeast-1:001234567890:db:example_*
rds-modify-db-parameter-group test_param_group -p "name=general_log, value=1, method=immediate"
echo "select * from mysql.general_log order by event_time desc limit 10;" \ | mysql --default-character-set=utf8 -u root -p -h mydb.xxxxx.ap-northeast-1.rds.amazonaws.com mysql
rds-modify-db-parameter-group test_param_group -p "name=slow_query_log, value=1, method=immediate" rds-modify-db-parameter-group test_param_group -p "name=long_query_time, value=3, method=immediate" rds-modify-db-parameter-group test_param_group -p "name=min_examined_row_limit, value=10000, method=immediate"
mysql -uroot -p -h mydb.xxxxx.ap-northeast-1.rds.amazonaws.com mysql SHOW global VARIABLES LIKE 'slow_query_log'; SHOW global VARIABLES LIKE 'long_query_time'; SHOW global VARIABLES LIKE 'min_examined_row_limit';
echo "select * from mysql.slow_log order by start_time desc limit 10;" \ | mysql --default-character-set=utf8 -u root -p -h mydb.xxxxx.ap-northeast-1.rds.amazonaws.com mysql
CALL mysql.rds_rotate_general_log; CALL mysql.rds_rotate_slow_log;
rds-list-tags-for-resource "arn:aws:rds:ap-northeast-1:1234567890:db:sample"
TAG Name sample
TAG var1 hoge1