#author("2018-10-23T15:11:31+09:00","","") [[Linux]]~ #shadowheader(1,mysql); #contents * Common [#t853db14] ** mysql server backup [#i7541d76] *** command backup 1[#b396538c] mysqldump --opt --all-databases --events --default-character-set=binary -u root --password=password > /backupDirectory/mysqlDump.sql *** backup script [#hae90da9] [root@centos ~]# vi mysql-backup.sh作成 #!/bin/bash PATH=$PATH:/usr/local/sbin:/usr/bin:/bin # バックアップ先ディレクトリ BACKDIR=/backup/mysql # MySQLrootパスワード ROOTPASS=xxxxxxxx # バックアップ先ディレクトリ再作成 rm -rf $BACKDIR mkdir -p $BACKDIR # データベース名取得 DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /` # データベースごとにバックアップ for dbname in $DBLIST do table_count=`mysql -u root -p $ROOTPASS -B -e "show tables" $dbname|wc -l` [ $table_count -ne 0 ] && mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy done [root@centos ~]# chmod 700 mysql-backup.sh *** command backup restore 2 [#l696e1f1] -参考リンク --[[mysqldumpまとめ(外部):https://qiita.com/PlanetMeron/items/3a41e14607a65bc9b60c]] --[[MySQLダンプ、リストア(外部):https://qiita.com/macer_fkm/items/d920ff77f0f5ae5484f9]] -バックアップ(ダンプ, dump) --データベース mysqldump -u USER_NAME -p -h HOST_NAME DB_NAME > OUTPUT_FILE_NAME --テーブル mysqldump -u USER_NAME -p -h HOST_NAME DB_NAME TABLE_NAME > OUTPUT_FILE_NAME -リストア mysql -u username -ppassword -D DBname < dumpfilename.sql ** その他 [#m333d688] *** csv ファイル出力 [#t7009015] SELECT * FROM テーブル名 INTO OUTFILE "ファイル名" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '囲み文字の指定'; *** グループしたカウントを条件に指定(group, count, mysql) [#q66a4e44] - having を使う -- 例 select column1,count(column2) as column2_num from hoge_table group by column2_num having count(column2) = 1 ***テーブルの作成_Create_Table [#l4f2c517] - 例1 [#t8afa814] create table testm ( key1 char(008) primary key, data1 int8, data2 int8, data3 int8 ) type=InnoDB; - 例2 AUTO_INCREMENT, AUTO INCREMENT, PRIMARY KEY [#w456b100] CREATE TABLE book2 ( id INT(11) NOT NULL AUTO_INCREMENT, title VARCHAR(64), author_name VARCHAR(32), detail TEXT, image VARCHAR(64), PRIMARY KEY (id) ); -例3(合わせ技), DB TYPE, DB CHARSET, ENCODE [#i2fb695c] CREATE TABLE book2 ( id INT(11) NOT NULL AUTO_INCREMENT, title VARCHAR(64), author_name VARCHAR(32), detail TEXT, image VARCHAR(64), PRIMARY KEY (id) ) type=InnoDB DEFAULT CHARSET=utf8; *** テーブル構造の変更 [#xa6c7664] - カラムの追加 [#xad2682e] alter table personal add new_col_name varchar(20) after col_name; - カラムの型変更 [#ga2b81a0] -- alter table テーブル名 modify カラム名 型; -- 例 alter table goods modify no smallint; *** not exists の高速化 [#a400fecd] -○○が含まれないデータを追加、などで not exists を使用する時があるが遅い。。。 -結局高速化はindexに頼るしか無かったが、一応メモ書き -not exists -> left join.~ 残念だがあまり高速化されなかった。 ++ not exists code insert into table1 (colum1,colum2,colum3) select table2.colum1,table2.colum2,table2.colum3 from table2 where not exists (select colum2 from table1 where table2.colum1=table1.colum1 and table2.colum2=table1.colum2 and table2.colum3=table1.colum3) ++ left join insert into table1 (colum1,colum2,colum3) select table2.colum1,table2.colum2,table2.colum3 from table2 left join table on table2.colum1=table1.colum1 and table2.colum2=table1.colum2 and table2.colum3=table1.colum3 where table1.colum1 is null; -indexを付ける。10倍位高速になりました。 ALTER TABLE table1 ADD INDEX index_name(colum1, colum2, colum3); ALTER TABLE table2 ADD INDEX index_name(colum1, colum2, colum3); *** バージョン情報の表示 [#c49cb9ee] mysql --version * Version 5.7 [#l31ad9cf] ** CentOS7 へのインストール [#o324665b] *** リンク [#jfb67801] +[[CentOS7に mysql-community-server をインストールし、LAN内の別マシンからアクセス可能にする。(外部):https://qiita.com/htsun/items/449dd20625ee84dc1379]] +[[centOS7でLAMP環境を作る(外部):https://qiita.com/KaI_Qiita/items/6a085571e1a75c69fb4c]] *** MariaDBの削除 [#cc9e12fd] sudo yum remove mariadb-libs sudo rm -rf /var/lib/mysql *** リポジトリファイルのインストール [#g111bf61] yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm *** MySQLをインストール [#k4399939] sudo yum install mysql-community-server mysql-community-client *** php-mysql のインストール [#sd7b99f9] yum install --enablerepo=remi,remi-php70 php-mysqlnd *** サービスの起動 [#d452dc36] sudo systemctl start mysqld *** 初回パスワードの確認 [#te6a01ef] sudo cat /var/log/mysqld.log | grep password *** 初回設定 [#kf36c47d] mysql_secure_installation *** サービスの再起動 [#kd184fd1] sudo systemctl restart mysqld *** サービスの自動起動 [#wa873606] -設定 sudo systemctl enable mysqld -確認 sudo systemctl status mysqld ** 旧バージョンからデータで上書きした際、起動できなくなる(バックアップ, リストア) [#x4a9f6c0] *** リンク(外部) [#o44fe92e] -[[CentOS7.2でのMySQLインストールでの問題:https://teratail.com/questions/53026]] -[[CentOSのMySQLを5.1から5.7に更新する手順:https://kei178.me/programming/607/]] *** 原因 [#ebb72d59] - ユーザーのパスワードが上書きされる - そのパスワードが新しいサーバーのパスワードポリシーに合っていない *** 対策 [#l7afdbae] - Safe mode(セーフモード)で起動(CentOS7 の場合) -- systemctl set-environment MYSQLD_OPTS="--skip-grant-tables" -- systemctl start mysqld - mysql の upgrade mysql_upgrade -u root -p