20210715のMySQLに関する記事は3件です。

EC2踏み台サーバーを経由して、RDSのDBを別のRDSのDBに移す方法

はじめに タイトルどおり、EC2踏み台サーバーを経由して、RDSのDBを別のRDSのDBに移す方法について記載します。 不明点等あれば、気軽にコメントください! 流れ ①EC2にSSH接続する ②EC2からRDSのmysqlにログインできるか確認 ③RDSのDBをEC2にエクスポートする ④別のRDSのDBパラメータグループのパラメータを変更 ⑤EC2から別のRDSにインポートする 環境 EC2:Amazonlinux2 RDS:Aurora/mysql ①EC2にSSH接続する こちらの記事を参考にしてください。 SSH接続した状態で①〜⑤まで作業してください。 ②EC2からRDSのmysqlにログインできるか確認 $ mysql -h RDSのエンドポイント -P 3306 -u ユーザー名 -p Enter password: mysql> SHOW DATABASES; old_DB コピーしたいDB名をold_DBとします。 エラー対処①「Access denied」 ERROR 1045 (28000): Access denied for user 「Access denied」が表示され、mysqlにログインできない場合は、セキュリティグループに問題がある可能性があります。RDSのインバウンドルールを確認し、EC2からの接続が許可されているか確認してみてください。 また、RDSのエンドポイント、ユーザー名、パスワードが間違っている可能性もありますので、確認方法が分からない方は、以下のサイトを参考に調べてください。 【AWS図解】RDSのユーザ名とパスワードを忘れた場合の確認方法 Aurora/mysqlであれば、リージョン別クラスターのライターインスタンスをRDSのエンドポイントに指定しました。 エラー対処②「mysql: コマンドが見つかりません」 mysqlをインストールしましょう mysql-communityリポジトリを使ってmysqlをyumでインストールします。 $ sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm $ sudo yum install mysql $ mysql --version mysql Ver 8.0.18 for Linux on x86_64 (MySQL Community Server - GPL) 他にもHomebrewでmysqlをインストールする方法もあります。 ③RDSからEC2にエクスポートするコマンド $ mysqldump --skip-column-statistics --quick --single-transaction -h RDSのエンドポイント -u 別のRDSのユーザー名 -p DB名 | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /var/tmp/dump.sql DB名:new_DB オプション:--skip-column-statistic --quick --single-transaction なぜこのようなコマンドなのかはこちらを参考にしてください。 MySQLのDBからAWSのRDSへデータをインポートする ④別のRDSのDBパラメータグループのパラメータを変更 別のRDSのmysqlにログインし、下記のValueがOFFであればONにする必要があります。 mysql> SHOW VARIABLES LIKE 'log_bin_trust_function_creators'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin_trust_function_creators | OFF | +---------------------------------+-------+ OFFのままだと、⑤のEC2から別のRDSにインポートができません。 RDSのDBパラメータグループのパラメータを新しく作成し、log_bin_trust_function_creatorsを1に変更し、RDSにアタッチさせ、再起動します。すると、ValueがONになります。 RDSに元々ついているデフォルトのDBパラメータグループは、パラメータが変更できない仕様になっていますので、新しく作成する必要があります。 mysql> SHOW VARIABLES LIKE 'log_bin_trust_function_creators'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin_trust_function_creators | ON | +---------------------------------+-------+ 詳しい方法は下記を参照してください。 AWS RDS MySQL で create function できるようにする https://aws.amazon.com/jp/premiumsupport/knowledge-center/rds-mysql-functions/ ⑤EC2から別のRDSにインポートする 別のRDSに新しくDBを作成し、そのDBにインポートします。 mysql> CREATE DATABASE new_DB; $ mysql -h RDSのエンドポイント -u 別のRDSのユーザー名 -p DB名 < /var/tmp/dump.sql
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MySQLでPDO接続時のエラーの出力設定について

PDO::ERRMODE_SILENT デフォルトのエラー設定。エラーメッセージを出力しない。エラー内容は保持している。 エラ−を取得するにはPDO::errorCode()かPDO::errorInfo()を使います。 PDO::ERRMODE_WARNING いつものブラウザに表示されるエラーを出力させるにはこの設定がいいと思います。この設定が返すのはE_WARNINGなので、スクリプトは停止されません。 さきほどのPDO::ERRMODE_SILENTと同じくPDO::errorCode()およびPDO::errorInfo()でエラーコード等を取得することも可能です。 開発中はこの設定が便利でいいかもしれません。 PDO::ERRMODE_EXCEPTION 最後の設定は例外を投げます。もっともエラーハンドリングに向いている設定かもしてれません。 この設定をしているとPDOExceptionがスローされます。ですからtrycatch構文でキャッチすれば処理を分岐させることが可能です。 例外オブジェクトからも取得できますが、PDO::errorCode()およびPDO::errorInfo()でエラーコード等を取得することも可能です。 参考サイト
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[LeetCode] Calculate Special Bonus

Problem 1873. Calculate Special Bonus 難易度:Easy LeetCode link Concept CASE 式 LIKE 句 Code SELECT employee_id, CASE WHEN employee_id % 2 = 0 THEN 0 WHEN name LIKE 'M%' THEN 0 ELSE salary END AS bonus FROM Employees ORDER BY employee_id
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む