レビュー

親愛なる友人は、私は再びお会いできて嬉しいです、そして、前の章で学んだ後、私たちは単にビットMySQLを知って、MySQLは、開発プロセスの会社の支店のMySQLは、MySQLの利点とMySQLの簡単な解剖一部を学びました。

章のインストールによると(初心者のLinuxの学生が自分のメールボックスに質問を送ることができます任意の質問がある場合は、オペレーティングシステムのインストールの接触補助マイクロ手紙:cto51boke取得)が必要な環境の後に完了し、この章では、で始まる、私たち環境に実際の工事をすること、建物には、以下のいくつかのバージョンを参照してください、そして5.6と5.7が必要とされなければならないが、友人の前に、ここで8.0のインストールもデモと一緒にインストールされているとの違いを説明しています

Mysql5.6.34(Mysql稳定版本)
Mysql5.7.20(Mysql稳定版本) Mysql8.0.15(官方最新GA版本)

インストールはじめに

?、はい、非常にシンプルですが、インターネット上の剛性みんなのインストールは、記事を見つけるために、そして誰もがより多くの時間ベールの長さよりも、何もないところから構築することができます:私たちは言った前に非常に軽量のMysql、MySQLはそれは非常に単純な答えでなければならないインストールその本番環境では誰もがインストールされている考慮に入れた後、我々は全体を行うには、アカウントに直接準備をする必要がある場合、MySQLをインストールする前に、私たちは、このような赤ちゃんの誕生として、インストール後に、あなたの環境を最適化する必要があり、彼の電荷が私の基本的な環境を見て、言ってあまり話をしなかった(私は3つの仮想マシンをインストールした三つのバージョン、友人の限定された条件は、インストールを繰り返すように試みることができる)、暖かく、家族の成長に生まれすることができます

机器1:
网络:桥接
OS:CentOS7.4
CPU:4核
内存:8G 磁盘:100G 机器2: 网络:桥接 OS:CentOS7.4 CPU:4核 内存:8G 磁盘:100G 机器3: 网络:桥接 OS:CentOS7.4 CPU:4核 内存:8G 磁盘:100G

環境の準備

環境準備5.6,5.6,8.0は同じです

1.ネットワーク:、我々は現在、使用することを学習しているので、サーバーのファイアウォールすることができ、SELinuxの閉じられて、私たちはいくつかの通信の問題を学ぶ際の影響を避けるために、ファイルのパーミッションとそう書かれた質問に、SELinuxの上の一般的な製造が開いていないので、次のようにファイアウォールは、ハードウェアの保守で行われるので、私たちは近くにすることができ、閉じた状態:

CentOS7:
防火墙临时关闭:systemctl stop firewalld
关闭防火墙开机自启:systemctl disable firewalld
selinux临时关闭:setenforce 0
selinux永久关闭:sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux

CentOS6:
防火墙临时关闭:service iptables stop 关闭防火墙开机自启:chkconfig iptables off selinux临时关闭:setenforce 0 selinux永久关闭:sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux

私たちは、あなたが操作のすべての4つの部分が実行されます、またはサービスがまだ開いた状態にあることが示唆された、SELinuxのようなコンフィギュレーション・ファイルはすぐには反映されません修正しました

これでシンプルにSELinux:我々はすべて知っているファイアウォールの役割は、外部サービスの保護である、それは、メインのLinuxのファイルの書き込みを保護、変更、保護を削除することであると言ってSELinuxの人気、ルールの特定のセットを構成することができ、興味のある友人は、今はほとんど生産して、理解することはで見ることができ、ように集中していません

2.CPU IOスケジューリングモデル:IOスケジューリングモードは、データベースに不可欠である、MySQLはデータディスクを取得するためにCPUによってIOスケジューリングですが、IOスケジューラなどのさまざまなオプションのSASディスクとソリッドステートディスクなどの適応の異なるシナリオが、ありますが、私たちを聞かせて一緒に見て、

查看当前IO调度模式:[]内为默认
[root@localhost /data/server]# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq 
[root@localhost /data/server]# 

1)cfg模式为比较通用的算法,保证所有任务尽量公平
此模式会给进程任务分配一个请求队列与时间片
在此时间片内由进程向设备文件进行请求,时间片消耗完后被挂起等待调度
2)deadline模式是在cfg的基础上,确保了在一个截止时间内服务请求,这个截止时间是可调整的 而默认读期限短于写期限.这样就防止了写操作因为不能被读取而饿死的现象 deadline是数据库服务器IO模型的最好选择 优先处于读请求 比较适合于SAS似机械磁盘 3)noop模式只有一个队列,每当有新的请求进来会将其与最近请求进行合并设备文件 此模式优先写而饿死读操作,与deadline相点相反的意思 此模式如果是机械磁盘极度不建议使用,如果是固态磁盘则可以尝试 修改当前IO调度模式: Centos7:grubby --update-kernel=ALL --args="elevator=deadline" Centos6:vi /etc/grub.conf 尾行添加 elevator=deadline echo deadline > /sys/block/sda/queue/scheduler 

強度を使用3.SWAP:SWAPは、オペレーティング・システム・メモリの保護機構であり、それはシステムを防止するために、これらのタスクを交換するために呼び出しますメモリマップファイル、メモリ不足またはメモリタスク非アクティブなオペレーティングシステムにディスク上にあります負荷が直接にはオペレーティングシステムのハングアップを、高すぎる、オペレーティングシステムは、あなたの脳、焼か脳があり、彼女の体の部分はすべて無駄だったが、それは、それ自体ではないのでSWAPの過度の使用は、データベースのパフォーマンスが低下しますメモリ、私たちは直接ダウンマシンならば、あなたの会社が悪いお金でない場合は、マシンのパフォーマンスが特に高く、それが直接0に設定されて入れ替えることができます(メイン図書館がSWAPの使用を確保しながら、トレードオフ値を取るが、使用しないようにしよう)ライブラリ指向のパフォーマンスからの切り替え

查看当前分配比例:
[root@localhost /data/server]# cat /proc/sys/vm/swappiness
30
[root@localhost /data/server]# 

修改使用优先级比例:
当前修改:echo 10 > /proc/sys/vm/swappiness 开机调用:echo -e "echo 10 > /proc/sys/vm/swappiness" >> /etc/rc.d/rc.local

4.ファイルシステム:XFSなどのデフォルトex4,7として、デフォルトのファイルシステムCentOS6、我々はXFSを使用することをお勧めビジネスデータベースの選択を行い、それに続くインデックスは、MySQL MySQLはB +ツリー構造だったが、また、XFSことを学ぶようになるだろうストレージの種類は、より良好なMySQLで合わせ、ファイルシステムタイプは、より安定しています

CentOS6格式化XFS需要操作如下:
1.yum install -y xfsprogs xfsdump 2.将文件系统格式化为xfs格式 

5.システム・パラメータ:あまりにも多くの並行プロセスを防止するために、Linuxの自体はパラメータのシステムクラッシュを引き起こしながら、MySQLの自体は、同時に読み取るアプリケーションにサービスを提供するので、生産MySQLへの接続がたくさんあるでしょうし、ファイルデータ制限されていた、我々は直接変更を行うことができます

查看:ulimit -a
1.打开文件的句柄数:open files(防止too many open files错误) 
2.针对用户数量限制:max user processes (防止单机多实例,连接数过多拒绝新连接)

修改:
echo -e "* soft nproc 65535\n* hard nproc 65535\n* soft nofile 65535\n* hard nofile 65535\n" >> /etc/security/limits.conf 生效:退出当前终端重新登陆ulimit –a查看两项参数是否已变更为65535 

我々は準備ができて、基本的な環境を完了した上で、開始MySQLのインストールとで、次の


Mysql5.6インストール

一、环境准备:
1.目录创建:mkdir -p /data/{software,mysql}
           mkdir -p /data/mysql/{data,log,tmp}

2.用户创建:useradd mysql

3.安装依赖包:yum install perl perl-devel perl-Data-Dumper libaio-devel -y

二、安装:
1.下载包文件:cd /data/software/
         wget https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
         tar -zxvf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
         mv mysql-5.6.34-linux-glibc2.5-x86_64 /usr/local/mysql

2.权限赋值:chown -R mysql:mysql /usr/local/mysql /data/mysql/*

三、配置文件: vi /etc/my.cnf
大家也可以在群里找我要文件发送给大家(后续我们一一讲解参数的意义)

[client]
port    = 3306
socket  = /data/mysql/tmp/mysql.sock

[mysql]
prompt="\u@db \R:\m:\s [\d]> "
no-auto-rehash

[mysqld]

user    = mysql
port    = 3306
basedir = /usr/local/mysql
datadir = /data/mysql/data
socket  = /data/mysql/tmp/mysql.sock
pid-file = /data/mysql/tmp/mysql.pid
character-set-server=utf8
collation-server = utf8_general_ci
#skip-character-set-client-handshake=true
#init_connect='insert into auditlog.accesslog(ConnectionID,ConnUserName,PrivMatchName,LoginTime) values(connection_id(),user(),current_user(),now());'
skip_name_resolve=1
event_scheduler = on
sql_mode='NO_UNSIGNED_SUBTRACTION,NO_ENGINE_SUBSTITUTION'

open_files_limit = 65535
innodb_open_files = 65535 
back_log=1024
max_connections = 512 
max_connect_errors=1000000 
interactive_timeout=300 
wait_timeout=300 
max_allowed_packet = 1024M

table_open_cache=2048 
table_definition_cache=2048 
table_open_cache_instances = 32
thread_cache_size = 128 
thread_stack = 512K 
external-locking = FALSE 

max_tmp_tables=200 
tmp_table_size=100M 
max_heap_table_size=100G 
explicit_defaults_for_timestamp = 1
lock_wait_timeout = 3600 
auto_increment_increment = 1 
auto_increment_offset = 1 
autocommit = ON 
secure_file_priv='' 
read_only = OFF 
lower_case_table_names=1 
innodb_fast_shutdown = 0
innodb_force_recovery=0
innodb_buffer_pool_dump_at_shutdown = 1 
innodb_buffer_pool_load_at_startup = 1 

log-error=/data/mysql/log/error.log 

slow_query_log=ON 
slow_query_log_file=/data/mysql/log/slow_mysql.log 
long_query_time=2

innodb_flush_log_at_trx_commit=1 
innodb_log_file_size =1G 
innodb_log_files_in_group=3 
innodb_log_group_home_dir=./ 

sync_binlog = 1  
binlog_cache_size = 16M 
max_binlog_cache_size = 1G 
max_binlog_size=1G 
expire_logs_days = 30

default-storage-engine = INNODB 
#internal_tmp_disk_storage_engine = INNODB
transaction_isolation=REPEATABLE-READ
innodb_max_dirty_pages_pct = 50 
innodb_adaptive_flushing = ON 
innodb_flush_method = O_DIRECT 

sort_buffer_size=8M 
join_buffer_size=8M 
query_cache_size=0 
query_cache_type=0 
read_buffer_size = 8M
optimizer_switch="index_condition_pushdown=on,mrr=on,mrr_cost_based=on,batched_key_access=off,block_nested_loop=on" read_rnd_buffer_size = 8M innodb_old_blocks_pct=35 #innodb_additional_mem_pool_size= 128M innodb_buffer_pool_size= 1G innodb_buffer_pool_instances = 16 innodb_log_buffer_size =32M bulk_insert_buffer_size=128M innodb_change_buffer_max_size = 50 innodb_doublewrite=on innodb_adaptive_hash_index = on innodb_file_per_table =1 innodb_data_file_path = ibdata1:1024M:autoextend innodb_page_size = 16k #innodb_checksum_algorithm =crc32 innodb_lock_wait_timeout = 35 innodb_rollback_on_timeout = on innodb_sync_spin_loops = 100 innodb_spin_wait_delay = 30 innodb_lru_scan_depth = 4000 innodb_thread_concurrency = 0 innodb_write_io_threads = 2 innodb_read_io_threads = 2 innodb_purge_threads = 2 innodb_io_capacity = 800 innodb_io_capacity_max = 1600 server-id = 3306110 log-bin= /data/mysql/log/binlog-mysql binlog_format=row 四、初始化Mysql 1.查看初始化使用帮助:/usr/local/mysql/scripts/mysql_install_db --help 2.初始化当前Mysql:/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/data --defaults-file=/etc/my.cnf --user=mysql 3.初始化完成后会提示你修改密码:/usr/local/mysql/bin/mysqladmin -u root password '123456' 4.查看初始化后数据库文件:ls /data/mysql/data/ 如果包括mysql、information_schema、test目录即可以视为初始化成功 [root@localhost data]# ls ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 ib_logfile2 mysql test undo001 undo002 undo003 5.最后我们启动mysql:/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

私たちは、ピクチャーを見て:OKプロンプトが、我々は、手動で設定ファイルの場所を指定するために始めたとき、最後の実際には、mysqld_safeを道を始める2つの通常の初期化後に表示され、初期設定のためのmysqladmin passwordコマンドを使用するために私たちを促し、MySQLを使用します、また、あなたは指定できませんが、MySQLの順序は、設定ファイルを検索したときに、次のように、知っておく必要があります。

/etc/my.cnf 
/etc/mysql/my.cnf 
/usr/local/mysql/etc/my.cnf


Mysql5.7インストール

基本的には同じMysql5.7のインストールおよび5.6のインストールが、違いは、初期化セクション、我々は別の場所を見ていることです

5.7初始化Mysql:
初始化操作:/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=mysql --initialize

查看随机密码:可以看到我们的初始密码为 "Eiv*/Dy!I44t"
[root@localhost data]# cat /data/mysql/log/error.log  | grep password
2019-02-21T10:45:24.067928Z 1 [Note] A temporary password is generated for root@localhost: Eiv*/Dy!I44t 5.启动mysql:/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

5.6と5.7の違い集計:ここでは、初期化後にのみ異なる説明し、我々はより多くの機能上の別のフォローアップを説明します

Mysql5.6:
1.初始化命令为mysql_install_db,初始化之后会由我们自己来进行密码的初次修改
2.数据目录下包含mysql information_schema test performache_schema四个数据库

Mysq.5.7:
1.初始化命令为mysqld,并多了一个initialize参数
初始化之后默认会生成一个随机密码至error.log文件中
后续我们使用这个密码进行二次修改
这个密码只是Mysql提供给我们初次使用的
登陆之后会提示我们密码过期问题
所以我们一般在初始化之后直接对密码进行二次修改使用如下命令:

/usr/local/mysql/bin/mysqladmin -uroot -p password
输入刚刚的随机密码,再输入两次你需要的密码即可

2.数据目录下包含mysql information_schema sys performache_schema四个数据库
5.7初始化参数介绍:

initialize参数:当我们添加这个参数时Mysql会默认帮我们生成一个随机密码到error.log文件内 initialize-insecure:如果我们在5.7初始化时指定这个参数,那么此时会和5.6初始化后结果相同,不会为我们生成随机密码由用户进行第一次的密码配置 

Mysql8.0インストール

一、环境准备:
1.目录创建:mkdir -p /data/{software,mysql}
                     mkdir -p /data/mysql/{data,log,tmp}

2.用户创建:useradd mysql

3.安装依赖包:yum install perl perl-devel perl-Data-Dumper libaio-devel -y 二、安装: 1.下载包文件:cd /data/software/ wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.15-linux-glibc2.12-x86_64.tar.xz xz -d mysql-8.0.15-linux-glibc2.12-x86_64.tar.xz tar -xvf mysql-8.0.15-linux-glibc2.12-x86_64.tar mv mysql-8.0.15-linux-glibc2.12-x86_64 /usr/local/mysql 2.权限赋值:chown -R mysql:mysql /usr/local/mysql /data/mysql/* 三、配置文件: vi /etc/my.cnf 大家可以继续使用上面的配置文件内容 但需要将部分参数进行删减,因为有部分特性至Mysql8.0已经彻底废弃了,如下: max_tmp_tables=200 query_cache_size=0 query_cache_type=0 后续讲解8.0新特性时我们会添加一些新的配置参数 四、初始化 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=mysql --initialize 查看初始化后数据库文件:ls /data/mysql/data/ 包括 [root@localhost data]# ls auto.cnf ca.pem client-key.pem ibdata1 ib_logfile1 ibtmp1 mysql performance_schema public_key.pem server-key.pem undo_001 ca-key.pem client-cert.pem ib_buffer_pool ib_logfile0 ib_logfile2 #innodb_temp mysql.ibd private_key.pem server-cert.pem sys undo_002 [root@localhost data]# 五、最后我们启动mysql:/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf & 六、登入Mysql: [root@localhost log]# /usr/local/mysql/bin/mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.15 MySQL Community Server - GPL Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. root@db 10:36: [(none)]> 

MySQLのパスワードのリセット

この時点では、MySQLのインストールは、我々はそれが情報を見ることができないときに変更を加える、パスワードの入力を紛失したり、二次パスワードの問題パスワードを主導していないのerror.logファイルに注意していない場合は、インストールが完了した後ではないことを、私たちが学ぶ完了します、どのように私は、その後、我々はまた、パスワードのリセットするには、次のアプローチを使用することができ、操作は非常に簡単です、アイデアがテーブルをスキップするMySQLのパスワードの許可にあることを行う必要があり、あなたは直接、家の中の家の鍵に入ることができないことができ、それができます彼らがやりたい、そして私たちは私たちの鍵を見つけるために家に帰ることができ、またはキーとロックが1に変更し、のは実際の動作を見てみましょう

注:生産は、我々はこれをしないことがあり、パスワードは厳密には基本的には損失が発生しない、DBAまたはDBAマネージャによって保持され、ライブラリの全般的な事業運営を停止することは禁止されていますが、メンテナンスあれば、すべてが100%を保証することはできませんパスワードが不十分な仕様になる失われたときに、選択的にパスワードのリセットすることができます


1)关闭Mysql:killall mysqld   或  ps aux | grep mysql | grep -v grep |awk '{print $2}' |xargs kill -9 (不建议使用此类方式停止Mysql,但目前为非常情况因为没有Mysql密码,所以不能使用mysqladmin shutdown的正常关库方式关闭Mysql) 2)使用跳过密码权限表的方式启动Mysql: /usr/local/mysql/bin/mysqld_safe –defaults-file=/etc/my.cnf –skip-grant-tables & 参数:--skip-grant-tables是跳过了mysql.user表的权限验证信息,让我们可以直接进入Mysql进行数据库操作 3)登陆:mysql (敲mysql命令就直接可以登入了) 4)查看用户:select user,host from mysql.user;(查看一下我们需要修改的用户信息) 5)修改密码:(Mysql的权限我们后续会再次进行讲解,先了解一下是由用户%主机+密码方式验证的) update mysql.user set authentication_string=PASSWORD('new-password') where user='root' and host='localhost'; 注意:此处我们使用的版本是5.7,以前版本使用如下命令,5.7之后密码的存储字段发生了变化: update mysql.user set password=PASSWORD('new-password') where user='root' and host='localhost'; 6)刷新权限:flush privileges;(Mysql修改user表后不会立即生效,需要执行此命令进行权限的刷新) 7)重启Mysql: 1.关闭Mysql:killall mysqld 或 ps aux | grep mysql | grep -v grep |awk '{print $2}' |xargs kill -9 2.启动Mysql:/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf & 

概要

仕事や運動でしばらくする場合は、この章では、我々はMysql5.6、Mysql5.7、インストールプロセスのMysql8.0各バージョンを学んだ、と私たちはあなたがMySQLをインストールする前に、知識を最適化するために、オペレーティング・システムを導入すべきです忘れてしまったrootパスワードはどのように処理するかである必要があり、練習は練習を繰り返す必要があることを示唆し、早期の学習効率が高いものののでノックする手を練習するための最良の方法です、コピー&ペーストしていないが、我々は今、舞台を学んでいます高速移動、それはしっかりと覚えているように、数回ノックバックの研究で遭遇知識の問題のいくつかを含めないでくださいそれは完全に5つの部分に分けられ、MySQLのインストールは非常に簡単です、ロードマップを有していてもよく、多くのアプリケーションは基本的にサービスされていますあなたは彼らの行動は、教師への操作に応じているかどうか、インストール中に問題が発生したかどうかを確認に行く、環境の準備、インストール、設定、初期化、起動した後、彼らのを確認するために行く:5つのセクションにまとめることができます。環境は問題ではありません、そしてより多くの脳は、我々がMysql.userにこのテーブルを学ぶようになった次の章を考えるように、そして制御のための権限のいくつかの他の態様は、本番環境でのアクセス制御は、ユーザーと開発者の制御権が良くない場合、それは問題があなたのDBAの質問は、我々はまた、新しいにいくつかの8.0をご紹介しますです、避けられません機能、我々は次の章で再びでしょう!