MySQL アンカンファレンス開催したい。というかします。
概要
最近のMySQLはバージョニング方針も変わって、周辺ツールを含めた機能追加も着々とされている一方で、MySQL関連のイベントは減ってしまったような気がします。
コロナ以降、イベントが少ない気がするのは残念に思いつつも、最近の私には社外で活動できる余力がなく、社内にMySQLのプロ、その他DBのプロがたくさんいるので、なんとなく満足してしまっていました。
ですが、MySQL Advent …
TL;DR
実行してるのは以下。
cd $datadir
echo "basicConstraints=CA:TRUE" > cav3.ext
echo "basicConstraints=CA:FALSE" > certv3.ext
openssl version
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout ca-key.pem -subj /CN=MySQL_Server_8.0.36_Auto_Generated_CA_Certificate -out ca-req.pem
openssl rsa -in ca-key.pem -out ca-key.pem
openssl x509 -sha256 -days 3650 -extfile cav3.ext -set_serial 1 -req -in ca-req.pem -signkey ca-key.pem -out ca.pem
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -subj /CN=MySQL_Server_8.0.36_Auto_Generated_Server_Certificate -out server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -sha256 -days 3650 -extfile certv3.ext -set_serial 2 -req -in server-req.pem -CA ca.pem -CAkey ca-key.pem -out server-cert.pem
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem -subj /CN=MySQL_Server_8.0.36_Auto_Generated_Client_Certificate -out client-req.pem …
[さらに読む]
ただ思いついたことを順番に実行したメモ。
1. keyring_fileを食った状態でt1を作る。
2. keyring_fileをコピーして消す
3. t2を作る -> エラーログなし
4. mysqldを停止してkeyring_fileを戻す
5. mysqldを起動する
6. t1もt2も読める
7. keyring_fileをコピーして消してmysqld再起動
8. t1, t2は読めない -> 起動時のエラーログに出る
9. t3を作る
10. mysqld再起動
11. t3を作った時点でkeyring_fileが変わっているのでt1, t2は読めない、t3だけが読める状態
```2024-01-20T14:29:22.972253Z 1 [ERROR] [MY-012664] [InnoDB]
Failed to decrypt encryption information, please check whether
key file has been changed!2024-01-20T14:29:22.972297Z 1 [ERROR]
[MY-012226] [InnoDB] Encryption information in datafile:
./d1/t1.ibd can't be decrypted, please confirm …
日々の覚書: xtrabackup + InnoDB TDE / keyring_file_dataで--prepareと--move-back の続き
keyring_file_dataを真面目に与えなくても何故か —prepare できてしまったのが謎だったので書き込みながら。
$ for n in {101..10000} ; do
> sudo mysql -e "INSERT INTO d1.t1 VALUES ($n)"
> done
$ sudo xtrabackup --backup -uroot --stream=xbstream | pzstd -dc > test.xb.zst
2024-01-20T05:23:28.912847-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --datadir=/var/lib/mysql
2024-01-20T05:23:28.913000-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --backup=1 --user=root --stream=xbstream
xtrabackup version 8.0.35-30 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 6beb4b49)
..
$ mkdir backup_with_running
$ cd backup_with_running
$ …
[さらに読む]
xtrabackupの準備
$ sudo dnf install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
$ sudo percona-release enable-only tools
$ sudo dnf install -y percona-xtrabackup-80
元記事の順番をかっ飛ばして、元記事の順番その3、 keyring_file_data
を相対パスで指定した時のバックアップとリストア(ちなみに標準パスを使おうと絶対パスを使おうと相対パスを使おうと同じだったので他の2つはもうやらない)
$ sudo xtrabackup --backup -uroot --stream=xbstream | pzstd -c > test.xb.zst
2024-01-19T13:48:33.194738-00:00 0 [Note] [MY-011825] [Xtrabackup] …
[さらに読む]
TL;DR
準備。 keyring_file_data
を指定しない場合はコンパイル時デフォルト (rpmは
/var/lib/mysql-keyring
、 Standaloneは
basedir/keyring
) に作る。
$ sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm
$ sudo dnf module -y disable mysql
$ sudo dnf install -y mysql-community-server
$ sudo vim /etc/my.cnf
..
user=mysql
early_plugin_load=keyring_file.so
$ sudo mysqld --initialize-insecure
$ sudo systemctl start mysqld
$ sudo mysql -e "CREATE DATABASE d1; CREATE TABLE d1.t1 (num int) ENCRYPTION='Y'; INSERT INTO d1.t1 …
[さらに読む]
TL;DR
参考: 日々の覚書: MySQLの論理バックアップにおける2段階のViewのリストア
下準備。
ビューのDEFINERになっているアカウントをDROPして、「DEFINERが存在しないビュー」「そのビューを使ったビュー」を作る。
…
TL;DR
mysqldump
とかが CREATE VIEW v1 AS
SELECT 1 AS num, 1 AS
val
とかいう一見VIEW定義となんの関係もない CREATE
VIEW
文を吐く理由
mysqldumpは単にアルファベット順にテーブルやビューの定義を取得するので、シンプルに直接 CREATE
VIEW
を書いてしまうと順番によってはリストアに転ける。
mysql80 38> CREATE TABLE t1 (num serial, val varchar(32));
Query OK, 0 rows affected (0.04 sec)
mysql80 38> INSERT INTO t1 VALUES (1, 'one'), (2, 'two');
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql80 38> CREATE VIEW v1 AS SELECT * FROM t1;
Query OK, 0 rows affected (0.01 sec)
mysql80 38> CREATE VIEW a_v1 AS SELECT val FROM v1 WHERE num = 1;
Query OK, 0 rows affected (0.02 sec)
mysql80 38> SHOW TABLES; …
[さらに読む]
2023年12月9日に福岡市で開催された、オープンソースカンファレンス2023福岡(OSC 2023-Fukuoka)に参加してきました。 相撲の話じゃないですけど、天下納めの九州場所。今年最後のOSCは、やはり九州です。 event.ospn.jp お昼の獲得に失敗 ノッケから「食べ物のうらみ」ですが、各地のOSCに参加する際は、ランチも含めて、当地での食事をとても楽しみにしています。それがですよ。午後イチのセミナーを聞きたかったのに、午前の最後に早めに出るという調整を怠ったせいで、ランチを食べ損なってしまった悲しさ。ただただ私が悪いんですけどね(笑)。 せめてもの福岡らしさを得るために、コ…