mysql 用户 多主机_MySQL单主机多实例部署
基础环境
1.部署环境
CentOS 7
5.6.42 MySQL Community Server (GPL)
2.MySQL环境准备
1)yum安装MySQL
#rpm -Uvh
#yum repolist
#yum -y install mysql-community-s
Mysql单主机多实例部署 基础环境 1.部署环境 CentOS 7 5.6.42 MySQL Community Server (GPL) 2.MySQL环境准备 1)yum安装MySQL #rpm -Uvh #yum repolist #yum -y install mysql-community-server 2)启动MySQL #systemctl is-enabled mysqld #systemctl start mysqld 3)Mysql安全调整 # mysql_secure_installation 4)登陆测试 #mysql -u root -p 以上说明登陆成功mysql主机,查看MySQL的用户权限: mysql>select user,host,password from mysql.user \G; 在这里可以看到有四个登录账号,user表示登录名,host表示登录主机限制,password为散列后的登录密码,其中%表示任意,如host的%表示可以任意主机登录,在之后会写到怎样修改这些登录数据。 多实例部署 1.创建目录并授权 这里根据占用的端口来创建,便于区分 #mkdir -p /data/multiMysql/{etc,socket,bin,datadir/330{7,8,9}} 然后用mysql_install_db来生成即将使用的多个实例的数据文件,首先需要对/data/multiMysql进行递归授权防止之后的操作出现权限不够的情况: # chmod -R 777 /data/multiMysql 或# chown -R mysql.mysql /data/multiMysql/ 2. Mysql数据库初始化 3307,3308,3309均执行一次。 #mysql_install_db --basedir=/usr --datadir=/data/multiMysql/datadir/3307 --user=mysql #mysql_install_db --basedir=/usr --datadir=/data/multiMysql/datadir/3308 --user=mysql #mysql_install_db --basedir=/usr --datadir=/data/multiMysql/datadir/3309 --user=mysql 其中的参数--basedir是指mysql的二进制文件目录,--datadir是指即将安装到的数据库文件目录,--basedir可以登录进mysql后查询: mysql>show variables like '%basedir%'; --user是指mysql实例将使用的在linux系统中的用户,最好命名为mysql,yum安装的方式一般都有这个用户,如果没有可以自主创建: #groupadd mysql # useradd -g mysql mysql 现在来查看三份数据文件有没有生成,例如查看3308的: #ls /data/multiMysql/datadir/3308/ 如果里面有文件代表生成成功。 3.多实例配置: 1)创建公用配置文件: #mkdir /data/multiMysql/etc/my.cnf.d/ #vim /data/multiMysql/etc/my.cnf.d/my.cnf [mysqld] skip-name-resolve lower_case_table_names=1 innodb_file_per_table=1 back_log = 50 max_connections = 300 max_connect_errors = 1000 table_open_cache = 2048 max_allowed_packet = 16M binlog_cache_size = 2M max_heap_table_size = 64M sort_buffer_size = 2M join_buffer_size = 2M thread_cache_size = 64 thread_concurrency = 8 query_cache_size = 64M query_cache_limit = 2M ft_min_word_len = 4 default-storage-engine = innodb thread_stack = 192K transaction_isolation = REPEATABLE-READ tmp_table_size = 64M log-bin=mysql-bin binlog_format=mixed slow_query_log long_query_time = 1 server-id = 1 key_buffer_size = 8M read_buffer_size = 2M read_rnd_buffer_size = 2M bulk_insert_buffer_size = 64M myisam_sort_buffer_size = 128M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 myisam_recover innodb_additional_mem_pool_size = 16M innodb_buffer_pool_size = 200M innodb_data_file_path = ibdata1:10M:autoextend innodb_file_io_threads = 8 innodb_thread_concurrency = 16 innodb_flush_log_at_trx_commit = 1 innodb_log_buffer_size = 16M innodb_log_file_size = 512M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 60 innodb_lock_wait_timeout = 120 [mysqldump] quick max_allowed_packet = 256M [mysql] no-auto-rehash prompt=\\u@\\d \\R:\\m> [myisamchk] key_buffer_size = 512M sort_buffer_size = 512M read_buffer = 8M write_buffer = 8M [mysqlhotcopy] interactive-timeout [mysqld_safe] open-files-limit = 8192 2)创建三个实例的配置文件 #vim /data/multiMysql/etc/3307.cnf [client] port = 3307 socket = /data/multiMysql/socket/mysql3307.sock [mysqld] datadir=/data/multiMysql/datadir/3307 port = 3307 socket = /data/multiMysql/socket/mysql3307.sock log-error=/data/multiMysql/datadir/3307/mysqld3307.log pid-file=/data/multiMysql/datadir/3307/mysqld3307.pid !includedir /data/multiMysql/etc/my.cnf.d 复制3307.cnf: # cd /data/multiMysql/etc/ # cp 3307.cnf 3308.cnf # cp 3307.cnf 3309.cnf 编辑复制的两份配置文件,把其中的3307修改为3308或3309。 #cat 3308.cnf # cat 3309.cnf 在配置文件中,port是实例的端口,socket是实例运行时的sock文件,datadir是之前生成的数据库文件位置。 启动实例 1.编辑实例启动脚本 #vim /data/multiMysql/bin/mysqlctl #!/bin/bash . /etc/init.d/functions PORT=$2 USER=root PASSWD= MYSQLBIN='/usr/bin' SOCKETFILE="/data/multiMysql/socket/mysql${PORT}.sock" MYCNF="/data/multiMysql/etc/${PORT}.cnf" [[ $# -eq 2 ]] || { echo "Usage: $0 {start|stop|restart} {PORT}" exit 1 } mysql_start() { [[ -e "$SOCKETFILE" ]] && { action "MySQL port: $PORT IS already running" /bin/false exit 0 } || { action "Starting MySQL... please wait" /bin/true $MYSQLBIN/mysqld_safe --defaults-file=$MYCNF &> /dev/null & } [[ "$?" == "0" ]] && { action "MySQL has been Started" /bin/true } || { action "MySQL Started" /bin/false } } mysql_stop() { [[ ! -e "$SOCKETFILE" ]] && { action "MySQL port:$PORT was already down" /bin/false } || { $MYSQLBIN/mysqladmin -u $USER -p$PASSWD -S $SOCKETFILE shutdown &>/dev/null } [[ "$?" == 0 ]] && { action "MySQL port:$PORT has been Stopped" /bin/true } } case "$1" in 'start') mysql_start ;; 'stop') mysql_stop ;; 'restart') mysql_stop sleep 3 mysql_start ;; *) echo "Usage: $0 {start|stop|restart} {PORT}" esac 因为是yum安装,所以mysqld_safe和mysqladmin可以不用加路径直接运行,另外mysql_port是指这个bash简要打开的实例的端口,mysql_username和mysql_userpassword即将在实例中配置的可关闭mysql进程的mysql用户名和密码。 给予mysqlctl文件执行权限,并尝试打开三个实例: #chmod +x /data/multiMysql/bin/mysqlctl 先关闭yum安装的默认mysql实例进程: #systemctl stop mysqld 2.启动三个实例 #/data/multiMysql/bin/mysqlctl start 3307 #/data/multiMysql/bin/mysqlctl start 3308 #/data/multiMysql/bin/mysqlctl start 3309 查看是否有三个mysql进程: #ps -ef | grep mysql 显示以上则说明实例启动成功。 连接测试 1.连接实例 连接监听于3307端口的实例 #mysql -u root -S /data/multiMysql/socket/mysql3307.sock 连接监听于3308端口的实例 #mysql -u root -S /data/multiMysql/socket/mysql3308.sock 连接监听于3309端口的实例 #mysql -u root -S /data/multiMysql/socket/mysql3309.sock 以上则说明实例能够连接成功。 2.打开实例 例如:连接3307的sock后执行sql: mysql>show variables like '%port%'; 以上则说明成功打开实例。 后续建立用户、创建密码、修改权限、自启动设置不再赘述。 至此,三个mysql实例创建到此结束。 (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |