ホームページ データベース mysql チュートリアル 快速实现MySQL的部署以及一机多实例部署_MySQL

快速实现MySQL的部署以及一机多实例部署_MySQL

May 27, 2016 pm 01:44 PM

MySQL有三个版本:二进制,源码包,RPM。

下面讲讲二进制包的安装过程

下载地址:http://dev.mysql.com/downloads/mysql/

选择Linux-Generic

我这里选择的是mysql-5.6.28-linux-glibc2.5-x86_64.tar.gz

解压后,里面有个文件INSTALL-BINARY,其实给出了二进制包的部署过程


shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server
ログイン後にコピー


相对于实际生产环境的部署,上面在初始化数据库的过程中少了一步-即指定配置文件,如果配置文件确认了,数据目录,日志目录都确认了,MySQL二进制版本的部署还是相当容易的一件事情。

下面写了一个脚本,基于后面提供的配置文件,执行格式如下:

sh 4.sh /root/mysql-5.6.28-linux-glibc2.5-x86_64.tar.gz /mysql3306 3306

其中 4.sh是脚本,/root/mysql-5.6.28-linux-glibc2.5-x86_64.tar.gz是二进制包的绝对路径,/mysql3306是basedir,3306是需设置的端口,

利用该脚本,只需要预先定义好配置文件,就可进行MySQL数据库的快速部署以及一台服务器上多个实例的部署。


#!/bin/bash
#需传入三个参数,第一个是mysql二进制压缩包的路径(绝对路径),
譬如/root/mysql-5.6.28-linux-glibc2.5-x86_64.tar.gz,
#第二个是mysql的basedir,即需要创建在哪个目录下,第三个是设置的端口号
filename=$1
basedir=$2
port=$3

groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd /usr/local
tar zxvf $filename
#file是获取mysql二进制包的名称,譬如mysql-5.6.28-linux-glibc2.5-x86_64.tar.gz
#dir是mysql压缩包的路径,不含包名本身,譬如/root,因为后续的配置文件my.cnf也是放到这个路径下
file=`basename $filename`
dir=`dirname $filename`

#获取解压后的名字,即mysql-5.6.28-linux-glibc2.5-x86_64
after_tar_file=${file:0:-7}
#将二进制包改名为 mysql+端口号,这样也便于后续的区分
mv $after_tar_file mysql"$port"
cd mysql"$port"

#将原始的配置文件(需和mysql压缩包放到同层目录下,在本例中是/root/my.cnf)
copy到解压并改名后的mysql二进制目录下,修改为my+端口号.cnf
cp $dir/my.cnf ./my"$port".cnf
user_cnf=my"$port".cnf
#下面主要是将原始配置文件中的路径修改为自己设定的路径,即传入的第二个参数
#整个的挑战在于传入的路径带有"/",在sed替换时会有问题,所有用了一个取巧的思路,即先将"/"替换为"|",
进行sed替换,然后再将文件中的"|"修改回"/"
basedir_new=${basedir/\//|}
sed -i "s/\/project\/class2/$basedir_new/g" $user_cnf
sed -i "s/|/\//g" $user_cnf

#设置server_id,取当前的秒值
server_id=`date +%s`
sed -i /^server_id/s/.*/server_id="$server_id"/ $user_cnf
#设置端口号
sed -i /^port/s/.*/port="$port"/ $user_cnf

#创建必要的目录并修改权限
mkdir -p "$basedir"/mysql/{run,data,share,log,tmp}

chown -R mysql $basedir
chgrp -R mysql $basedir

#下面这个是非必要的,具体看后面的总结
cp share/english/errmsg.sys "$basedir"/mysql/share/

#初始化时--force也是非必要的,具体可见后面的总结
scripts/mysql_install_db --user=mysql --defaults-file="$user_cnf" --force
bin/mysqld_safe --defaults-file="$user_cnf" --user=mysql &
ログイン後にコピー


下面给出了配置文件的一个参考,大家可根据实际情况进行相应的修改


[mysqld_safe]
pid-file=/project/class2/mysql/run/mysqld.pid

[mysql]
port=3306
prompt=\\u@\\d \\r:\\m:\\s>
default-character-set=utf8
no-auto-rehash

[client]
port=3306
socket=/project/class2/mysql/run/mysql.sock

[mysqld]
#dir
basedir=/project/class2/mysql
datadir=/project/class2/mysql/data
tmpdir=/tmp
lc_messages_dir=/project/class2/mysql/share
log-error=/project/class2/mysql/log/alert.log
slow_query_log_file=/project/class2/mysql/log/slow.log
general_log_file=/project/class2/mysql/log/general.log
socket=/project/class2/mysql/run/mysql.sock

#innodb
innodb_data_home_dir=/project/class2/mysql/data
innodb_log_group_home_dir=/project/class2/mysql/data
innodb_data_file_path=ibdata1:2G;ibdata2:16M:autoextend
innodb_buffer_pool_size=10G
innodb_buffer_pool_instances=4
innodb_log_files_in_group=2
innodb_log_file_size=1G
innodb_log_buffer_size=200M
innodb_flush_log_at_trx_commit=1
innodb_additional_mem_pool_size=20M
innodb_max_dirty_pages_pct=60
innodb_io_capacity=1000
innodb_thread_concurrency=16
innodb_read_io_threads=8
innodb_write_io_threads=8
innodb_open_files=60000
innodb_file_format=Barracuda
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_change_buffering=inserts
innodb_adaptive_flushing=1
innodb_old_blocks_time=1000
innodb_stats_on_metadata=0
innodb_read_ahead=0
innodb_use_native_aio=0
innodb_lock_wait_timeout=5
innodb_rollback_on_timeout=0
innodb_purge_threads=1
innodb_strict_mode=1
transaction-isolation=READ-COMMITTED

#myisam
key_buffer=64M
myisam_sort_buffer_size=64M
concurrent_insert=2
delayed_insert_timeout=300

#replication
master-info-file=/project/class2/mysql/log/master.info
relay-log=/project/class2/mysql/log/relaylog
relay_log_info_file=/project/class2/mysql/log/relay-log.info
relay-log-index=/project/class2/mysql/log/mysqld-relay-bin.index
slave_load_tmpdir=/project/class2/mysql/tmp
slave_type_conversions="ALL_NON_LOSSY"
slave_net_timeout=4
skip-slave-start
sync_master_info=1000
sync_relay_log_info=1000

#binlog
log-bin=/project/class2/mysql/log/mysql-bin
server_id=2552763370
binlog_cache_size=32K
max_binlog_cache_size=2G
max_binlog_size=500M
binlog-format=ROW
sync_binlog=1000
log-slave-updates=1
expire_logs_days=0

#server
default-storage-engine=INNODB
character-set-server=utf8
lower_case_table_names=1
skip-external-locking
open_files_limit=65536
safe-user-create
local-infile=1
#sqlmod="STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE"

log_slow_admin_statements=1
log_warnings=1
long_query_time=1
slow_query_log=1
general_log=0

query_cache_type=0
query_cache_limit=1M
query_cache_min_res_unit=1K

table_definition_cache=65536

thread_stack=512K
thread_cache_size=256
read_rnd_buffer_size=128K
sort_buffer_size=256K
join_buffer_size=128K
read_buffer_size=128K

port=3306
skip-name-resolve
skip-ssl
max_connections=4500
max_user_connections=4000
max_connect_errors=65536
max_allowed_packet=128M
connect_timeout=8
net_read_timeout=30
net_write_timeout=60
back_log=1024
ログイン後にコピー


总结:

在初始化的过程中,如果报以下错误:


FATAL ERROR: Neither host 'keepalived02' nor 'localhost' could be looked up with
/mysql3306/mysql/bin/resolveip
Please configure the 'hostname' command to return a correct
hostname.
If you want to solve this at a later stage, restart this script
with the --force option
ログイン後にコピー


但是在bash终端上执行hostname命令又确实有值返回,可加--force参数,如下所示:


代码如下:

scripts/mysql_install_db --user=mysql --defaults-file="$user_cnf" --force
ログイン後にコピー

如果报以下错误:

代码如下:

[ERROR] Can't find messagefile '/mysql3306/mysql/share/errmsg.sys'
ログイン後にコピー

可将二进制版本中share/english/errmsg.sys文件COPY到/mysql3306/mysql/share/下。

后续:这两个错误的原因都是因为basedir修改了,它默认是在二进制包中查找的。

如何利用脚本实现MySQL的快速部署以及一机多实例的部署,通过这篇文章希望对大家学习MySQL的部署有所帮助。

以上就是快速实现MySQL的部署以及一机多实例部署_MySQL的内容,更多相关内容请关注PHP中文网(www.php.cn)!


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

単一のスレッドレディスの使用方法 単一のスレッドレディスの使用方法 Apr 10, 2025 pm 07:12 PM

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

Redis ExporterサービスでRedis Dropletを監視します Redis ExporterサービスでRedis Dropletを監視します Apr 10, 2025 pm 01:36 PM

Redisデータベースの効果的な監視は、最適なパフォーマンスを維持し、潜在的なボトルネックを特定し、システム全体の信頼性を確保するために重要です。 Redis Exporter Serviceは、Prometheusを使用してRedisデータベースを監視するために設計された強力なユーティリティです。 このチュートリアルでは、Redis Exporterサービスの完全なセットアップと構成をガイドし、監視ソリューションをシームレスに構築します。このチュートリアルを研究することにより、完全に動作する監視設定を実現します

SQLデータベースエラーを表示する方法 SQLデータベースエラーを表示する方法 Apr 10, 2025 pm 12:09 PM

SQLデータベースエラーを表示する方法は次のとおりです。1。エラーメッセージを直接表示します。 2。エラーを表示し、警告コマンドを表示します。 3.エラーログにアクセスします。 4.エラーコードを使用して、エラーの原因を見つけます。 5.データベース接続とクエリ構文を確認します。 6.デバッグツールを使用します。

Apacheのデータベースに接続する方法 Apacheのデータベースに接続する方法 Apr 13, 2025 pm 01:03 PM

Apacheはデータベースに接続するには、次の手順が必要です。データベースドライバーをインストールします。 web.xmlファイルを構成して、接続プールを作成します。 JDBCデータソースを作成し、接続設定を指定します。 JDBC APIを使用して、接続の取得、ステートメントの作成、バインディングパラメーター、クエリまたは更新の実行、結果の処理など、Javaコードのデータベースにアクセスします。

See all articles