MySQL8.0 でごにょごにょしてみた(仮)
関西DB勉強会に2回ほど参加させていただいたのと、
会社にお願いしてこのセミナーに行かせてもらったこともあって、
【大阪開催】MySQL8.0入門セミナー ~バックアップ編~
んでもって先日社内でセミナー参加報告のLTもしたこともありまして、
ちょっと趣味でMySQLを触ってみることにしましたん。
と言っても色々教わったことの10分の1ぐらいしか試せないへっぽこなので、
自分へのメモといった感じです。
まずはインストールしなきゃ(一番重要w
このあたりのページを参考にさせてもらいました。
MySQL8.0をmacOSにインストールする方法 | プログラミング入門ナビ
さくーっとインストールできて稼動確認も完了。
起動・再起動・停止
mysql.server start mysql.server restart mysql.server stop
ログイン・ログアウト
mysql -uroot -p(パスワード) exit
んじゃ、まずデータベースどんだけあるか一覧出してみますか。
show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.68 sec)
はい、特にまだなーんも触ってないんでw
じゃ、とりあえずデータベース一個作ってみますか。
mysql> create database miaow; Query OK, 1 row affected (0.16 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | miaow | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.02 sec)
うん、ミャオゥできたw
せっかくなんで作ったデータベースに切り替え。
use miaow;
じゃ、テーブルも作ってみるよ。とりあえず2個ね。
mysql> CREATE TABLE `house_cat_tbl` ( -> `seq` int(10) unsigned NOT NULL auto_increment, -> `cat_name` varchar(255) NOT NULL, -> `cat_type` varchar(255) default NULL, -> PRIMARY KEY (`seq`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected, 1 warning (0.15 sec) mysql> mysql> CREATE TABLE `stray_cat_tbl` ( -> `seq` int(10) unsigned NOT NULL auto_increment, -> `cat_name` varchar(255) NOT NULL, -> `cat_type` varchar(255) default NULL, -> PRIMARY KEY (`seq`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected, 1 warning (0.09 sec)
ちゃんとテーブル出来たか確認しておきましょうかね。
mysql> show tables; +-----------------+ | Tables_in_miaow | +-----------------+ | house_cat_tbl | | stray_cat_tbl | +-----------------+ 2 rows in set (0.01 sec)
出来た出来た。
データも登録しちゃおうかな。
mysql> begin; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO house_cat_tbl (cat_name, cat_type) VALUES ('Tama', 'Japanese'); Query OK, 1 row affected (0.10 sec) mysql> INSERT INTO house_cat_tbl (cat_name, cat_type) VALUES ('Zoe', 'American Shorthair'); Query OK, 1 row affected (0.00 sec) mysql> mysql> INSERT INTO stray_cat_tbl (cat_name, cat_type) VALUES ('Black', NULL); Query OK, 1 row affected (0.02 sec) mysql> INSERT INTO stray_cat_tbl (cat_name, cat_type) VALUES ('Mike', 'Tortoiseshell'); Query OK, 1 row affected (0.01 sec)
うん、満足(こら
ちゃんとデータ登録出来たか確認もしておきましょうね。
mysql> select * from house_cat_tbl; +-----+----------+--------------------+ | seq | cat_name | cat_type | +-----+----------+--------------------+ | 1 | Tama | Japanese | | 2 | Zoe | American Shorthair | +-----+----------+--------------------+ 2 rows in set (0.00 sec) select * from stray_cat_tbl; +-----+----------+---------------+ | seq | cat_name | cat_type | +-----+----------+---------------+ | 1 | Black | NULL | | 2 | Mike | Tortoiseshell | +-----+----------+---------------+ 2 rows in set (0.00 sec)
まぁ、ここまでは仕事で普通にやってることばかりでして、
本当はバックアップの確認をしたかったのですよね。
まずは仕事でも使っている(というかこれしかしたことないなぁ)ダンプ取得。
別ターミナル開いてコマンド打ってみます。
mysqldump -uroot -p(パスワード) -hlocalhost miaow house_cat_tbl stray_cat_tbl > miaow_dump.sql
取れた取れた〜。ダンプ取れた〜。
中身も見てみますかね。ふむふむ、こんな感じに出力されているんですね。
cat miaow_dump.sql -- MySQL dump 10.13 Distrib 8.0.12, for osx10.12 (x86_64) -- -- Host: localhost Database: miaow -- ------------------------------------------------------ -- Server version 8.0.12 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; SET NAMES utf8mb4 ; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `house_cat_tbl` -- DROP TABLE IF EXISTS `house_cat_tbl`; /*!40101 SET @saved_cs_client = @@character_set_client */; SET character_set_client = utf8mb4 ; CREATE TABLE `house_cat_tbl` ( `seq` int(10) unsigned NOT NULL AUTO_INCREMENT, `cat_name` varchar(255) NOT NULL, `cat_type` varchar(255) DEFAULT NULL, PRIMARY KEY (`seq`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `house_cat_tbl` -- LOCK TABLES `house_cat_tbl` WRITE; /*!40000 ALTER TABLE `house_cat_tbl` DISABLE KEYS */; INSERT INTO `house_cat_tbl` VALUES (1,'Tama','Japanese'),(2,'Zoe','American Shorthair'); /*!40000 ALTER TABLE `house_cat_tbl` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table `stray_cat_tbl` -- DROP TABLE IF EXISTS `stray_cat_tbl`; /*!40101 SET @saved_cs_client = @@character_set_client */; SET character_set_client = utf8mb4 ; CREATE TABLE `stray_cat_tbl` ( `seq` int(10) unsigned NOT NULL AUTO_INCREMENT, `cat_name` varchar(255) NOT NULL, `cat_type` varchar(255) DEFAULT NULL, PRIMARY KEY (`seq`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `stray_cat_tbl` -- LOCK TABLES `stray_cat_tbl` WRITE; /*!40000 ALTER TABLE `stray_cat_tbl` DISABLE KEYS */; INSERT INTO `stray_cat_tbl` VALUES (1,'Black',NULL),(2,'Mike','Tortoiseshell'); /*!40000 ALTER TABLE `stray_cat_tbl` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2018-10-21 0:33:18
よく運用業務でデータ更新行う場合、まずダンプ取っておきますね。
失敗しちゃった場合すぐ戻せるように。
でもこれ、ダンプ取った後に他の処理からデータ更新されてたら、
ダンプ戻すとデータデグレするんですよね。(そりゃそうだ)
マスタデータで他に更新される心配がなければいいとは思うんですが。
で、セミナーでバイナリログの話を聞きまして。
お恥ずかしい話ですがバイナリログの話は全然知らなかったです。
バイナリログ操作する話も試してみようと思うんですが・・・
続きは次のエントリで(こら
おやすみなさい・・・