---
# System prepended metadata

title: www.iz-gnote.com → dbjt01.iz-gnote.com DB移行

---

# www.iz-gnote.com → dbjt01.iz-gnote.com DB移行 
## 本番環境から20190625のバックアップを取得する


作業日時：2019年7月9日  21:00 〜 24:00
予定作業時間：３時間
実績作業時間：

## 事前準備
- [x] 本番環境のバックアップスクリプト修正
- [x] ダンプファイルにバイナリログ、チェックポイントが記録されていることを確認
- [x] 復元後DBの確からしさの確認方法について
- [x] 検証用DB作成

### 移行DBを照合する準備
- [ ] 確認

「www.iz-gnote.com」 と 「dbjt01.iz-gnote.com」で確認用DBを作成する。

```sql
CREATE DATABASE intra_newshaken_121886_check_result DEFAULT CHARACTER SET utf8;
CREATE TABLE check_result (
 `id` int(10) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
 `db_name` varchar(64) NOT NULL,
 `table_name` varchar(64) NOT NULL,
 `count` int(10) unsigned NOT NULL 
 );

```

## DBに不足テーブルを追加
:::danger
dbjt01で作業
```
ssh ytakahashi@dbjt01.iz-gnote.com -p 1022
```
:::

### インターゾーンDB 速太郎DB に不足テーブルを追加
【テーブル作成 nskn_dic_receive_data】

```
#作業ディレクトリ
$cd /home/ytakahashi/ignoretable_create
```

```
$cat nskn_dic_receive_data.sql
```

```sql
CREATE TABLE IF NOT EXISTS `nskn_dic_receive_data` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `received_data` mediumtext COLLATE utf8_unicode_ci NOT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='DIC連携受信データ・ロギング用テーブル' AUTO_INCREMENT=441 ;
```
```
#SQL流し込み
## iz
$mysql -u root -pfindstar intra_newshaken_121886 < nskn_dic_receive_data.sql

##速太郎
$mysql -u root -pfindstar intra_newshaken_121886_hayanote < nskn_dic_receive_data.sql

```

【テーブル作成 nskn_sss_receive_log】
```
$cat nskn_sss_receive_log.sql
```
```sql
CREATE TABLE IF NOT EXISTS `nskn_sss_receive_log` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `received_data` mediumtext COLLATE utf8_unicode_ci NOT NULL,
  `received_log` mediumtext COLLATE utf8_unicode_ci NOT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='SSS連携受信データ・ロギング用テーブル2' AUTO_INCREMENT=13719 ;
```

```
#SQL流し込み
## iz
$mysql -u root -pfindstar intra_newshaken_121886 < nskn_sss_receive_log.sql

##速太郎
$mysql -u root -pfindstar intra_newshaken_121886_hayanote < nskn_sss_receive_log.sql
```

【テーブル作成 nskn_sss_receive_data】
```
#sqlファイル作成
$cat nskn_sss_receive_data.sql
```
```sql
CREATE TABLE IF NOT EXISTS `nskn_sfns_receive_data` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `received_data` mediumtext COLLATE utf8_unicode_ci NOT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='NS連携受信データ・ロギング用テーブル' AUTO_INCREMENT=4098 ;
```
```
# SQL 流し込み
##iz
$mysql -u root -pfindstar intra_newshaken_121886 < nskn_sss_receive_data.sql

## 速太郎
$mysql -u root -pfindstar intra_newshaken_121886_hayanote < nskn_sss_receive_data.sql

```

## DB移行作業
:::danger
本番環境で作業
:::

ホスト www.iz-gnote.com
アカウント ytakahashi

【DB全件取得と復元用のバックアップ作成】
```
# ssh接続
$ssh ytakahashi@www.iz-gnote.com -P 1022

# ディレクトリの移動
$cd /home/ytakahashi


# apcheをメンテナンスページにする
※ 作業開始時刻から20分程度はメンテナンスページを表示させる
※ バックログの課題に、メンテナンスページ表示手順を記載(けんいちさん)

あとで手順をバックログから転記

# apache停止
$apachectl graceful-stop

```

## 本番環境のDBバックアップを取得する
```
オールデータベースを追加する
※月曜日に、バイナリログからの取込にかかる時間をみて、実施の判断をする

# バイナリログの切り替え
$mysql -u root -p 
mysql> flash logs;
mysql> exit


#全データベース取得コマンド
$mysqldump -u root -pfindstar --flush-logs --master-data=2 --all-databases --events \
--ignore-table=intra_newshaken_121886.nskn_dic_receive_data \
--ignore-table=intra_newshaken_121886.nskn_sss_receive_log \
--ignore-table=intra_newshaken_121886.nskn_sfns_receive_data \
--ignore-table=intra_newshaken_121886_hayanote.nskn_dic_receive_data \
--ignore-table=intra_newshaken_121886_hayanote.nskn_sss_receive_log \
--ignore-table=intra_newshaken_121886_hayanote.nskn_sfns_receive_data \
--ignore-table=intra_newshaken_121886_bk.nskn_dic_receive_data_bk2019-04-12 \
--ignore-table=intra_newshaken_121886_bk.nskn_sss_receive_log_bk2018-04-01 \
--ignore-table=intra_newshaken_121886_bk.nskn_sss_receive_log_bk2018-06-14 \
--ignore-table=intra_newshaken_121886_bk.nskn_sss_receive_log_bk2018-10-28 \
--ignore-table=intra_newshaken_121886_bk.nskn_sss_receive_log_bk2019-01-27 > /home/ytakahashi/mysqldump-alldatabase-$(date +%Y%m%d) &

```

【www.iz-gnote.com のバックアップをdbjt01にコピー】

```
# 作業ディレクトリ
$cd /home/www.iz-gnote.com/backup/
```

```
# 全DBのダンプを本番環境にコピーする
※コピー対象の最終更新日を確認
scp ./www.iz-gnote.com-alldatabase.sql.tar.gz  ytakahashi@dbjt01.iz-gnote.com:/home/ytakahashi/
```

### 復元ポイントの確認
```
#ダンプデータから復元ポイントの位置を知る

#バックアップ保存ディレクトリ
$sudo su -
$cd /home/www.iz-gnote.com/backup
$cp www.iz-gnote.com-alldatabase.sql.tar.gz /home/ytakahashi/
$cd /home/ytakahashi/
$tar -zxvf  www.iz-gnote.com-alldatabase.sql.tar.gz 
$less www.iz-gnote.com-alldatabase.sql

# less　コマンドで「CHANGE MASTER TO MASTER_LOG_FILE」の位置を確認する

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.xxxxxx', MASTER_LOG_POS=xxxxx;

```

### MySQLバイナリログ確認
```
#取込データの選択
$cd /var/lib/mysql/
$ls ./mysql-bin* -alhr --full-time

#手順「復元ポイントの確認」で特定した、バイナリログをコピーする
$ mkdir -p /home/ytakahashi/gnote_binaly_log
$ cp ./mysql-bin.xxxxxx /home/ytakahashi/gnote_binaly_log/
```

### バイナリログをDBサーバーに転送する

```
#MySQLにログインし、バイナリファイルを確認する
mysql -u root -pfindstar

#バイナリログの一覧を取得
mysql> SHOW BINARY LOGS;

#現在ログ出力しているバイナリログを確認
##出力先のバイナリログファイル名をメモ =  
mysql> SHOW MASTER STATUS;

※バイナリログが、dumpに記載されているファイルより、大きい番号であった場合、ファイルが分割されていることになるので、結合する必要がある。

#作業開始時のチェックポイント作成
mysql> flush logs;


# 検証データ取得スクリプト実行
$./check_gnote_data_2019-07-06.sh
※ t_dtime_fromは移行当日の日付に直す


#バイナリログが切り替わっていることを確認する
mysql> SHOW MASTER STATUS;

#本番環境に存在するバイナリログをdbjt01に転送する
$ scp -p 1022 -r /home/ytakahashi/gnote_binaly_log ytakahashi@133.242.226.157:/home/ytakahashi/
```

## ダンプ、バイナリログからの復旧手順

:::danger
### dbjt01.iz-gnote.comでの作業
```
$ssh ytakahashi@dbjt01.iz-gnote.com -p 1022
```
:::


 【バイナリログを確認する】
```
$sudo su -
$cd /home/ytakahashi/gnote_binaly_log

#バイナリログの確認
$ mysqlbinlog ./mysql-bin.xxxxxx
mysqlbinlog: unknown variable 'default-character-set=utf8' < 文字コード未指定のエラー

エラーが発生した場合はこちら
$ mysqlbinlog --no-defaults ./mysql-bin.xxxxxx

```
※「--no-defaults」　my.cnf で指定されている文字コードの指定を解除する


【バイナリからSQLを生成する】
```
# 最新のバイナリログを確認する
$cd /home/ytakahashi/gnote_binaly_log
$ls ./mysql-bin* -alhr --full-time 

#更新日が最新のバイナリファイルをSQL化する
$mysqlbinlog --no-defaults ./mysql-bin.xxxxx > /home/ytakahashi/$(date +%Y%m%d)-binary-convert.sql

#バイナリログが複数ある場合は、それぞれを結合する
## 1つ目
$mysqlbinlog --no-defaults ./①mysql-bin.xxxxx > /home/ytakahashi/$(date +%Y%m%d)-binary-convert.sql

## 2つ目
mysqlbinlog --no-defaults ./②mysql-bin.xxxxx >> /home/ytakahashi/$(date +%Y%m%d)-binary-convert.sql


```



【データの流し込み】
:::danger
バックグラウンド実行する
:::
```
# gNOTEバックアップデータを取り込む
$cd /home/ytakahashi/
$tar -zxvf www.iz-gnote.com-dbbackup_20190625.sql.tar.gz
$mysql -u root -pfindstar -e "source home/ytakahashi/www.iz-gnote.com-dbbackup_20190625.sql" &

# 速太郎バックアップデータを取り込む
$tar -zxvf intra_newshaken_121886_hayanote.sql.tar.gz
$mysql -u root -pfindstar -e "source /home/ytakahashi/www.iz-gnote.com-hayanote-dbbackup_20190625.sql"

# バイナリログを取り込む
$cd /home/ytakahashi/gnote_binaly_log
$mysql -u root -pfindstar -e "source 20190625--binary-convert.sql" 

```


## アプリケーションからDB接続設定
:::danger
www.iz-gnote.com に存在するver1_boot のDBホストの値を変更する
:::

【dbhostの更新】
```sql
$ mysql -u root -pfindstar

-- mysqls作業 --

-- dbの確認
mysql SHOW databases;

-- boot db を選択する
USE ver1_boot;

-- クエリの確認
SELECT * FROM ver1_boot;

-- DBホストを更新する
UPDATE `clients`
SET dbhost = '133.242.226.157'
```

## 本番環境の接続確認
再起動
```
#apacheの起動
$apachectl -k start

#起動確認 
$service httpd status
```

:::info
phpMyAdminでレコード数を確認する
gNOTEが利用できることを確認する
:::


## 動作確認

- 参照系
    - [x] 顧客検索ができること
- 登録
    - [x] 顧客登録が可能
- 更新系
    - [x] 登録した顧客情報を更新することができる



バイナリログを確認してい、ログが記載されていることを確認する



## DBサーバーバックアップ取得 cron を設定する


## 進捗チェック、ロックテーブル、排他解除


