runaround’s diary

なんとなく、つれづれ

MySQL8.0 でごにょごにょしてみた(仮)

関西DB勉強会に2回ほど参加させていただいたのと、

run-around.hatenablog.com

run-around.hatenablog.com

会社にお願いしてこのセミナーに行かせてもらったこともあって、

【大阪開催】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

よく運用業務でデータ更新行う場合、まずダンプ取っておきますね。
失敗しちゃった場合すぐ戻せるように。
でもこれ、ダンプ取った後に他の処理からデータ更新されてたら、
ダンプ戻すとデータデグレするんですよね。(そりゃそうだ)
マスタデータで他に更新される心配がなければいいとは思うんですが。

で、セミナーでバイナリログの話を聞きまして。
お恥ずかしい話ですがバイナリログの話は全然知らなかったです。
バイナリログ操作する話も試してみようと思うんですが・・・

続きは次のエントリで(こら
おやすみなさい・・・