分享更有价值
被信任是一种快乐

Linux下Mysql如何安装多实例和主从配置

文章页正文上

小编给大家分享一下Linux下Mysql如何安装多实例和主从配置,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!mysql创建多个实例,其实就是把DATA文件,SOCK,PORT指向不同的文件和端口
Linux下搭建MySQL多实例环境
1.安装cmake
[root@mysql local]# yum -y install ncurses-develgcc-c++
[root@mysql local]# cd/usr/local
[root@mysql local]# tarzxvf cmake-2.8.4.tar.gz
[root@mysql local]# cdcmake-2.8.4
[root@mysql cmake-2.8.4]# ./bootstrap –出现如下报错,缺少c++编译器
[root@mysql local]# yum install gcc-c++ –可处理下面问题
[root@mysql cmake-2.8.4]# gmake
[root@mysql cmake-2.8.4]# makeinstall
[root@mysql cmake-2.8.4]# /usr/local
2.安装bison
[root@mysql local]# tar -zxvf bison-2.5.tar.gz
[root@mysql local]# cdbison-2.5
[root@mysql bison-2.5 ]# ./configure
[root@mysql bison-2.5 ]# make
[root@mysql bison-2.5 ]# makeinstall
[root@mysql bison-2.5 ]#/usr/local
3.编译安装mysql包
[root@localhost workspace]# tar xvf mysql-5.5.32.tar.gz
[root@localhost workspace]# cd mysql-5.5.32安装第一个MySQL数据库
(1)创建所需要的文件目录
[root@localhost mysql]# useradd mysql
[root@localhost local]# cd /usr/local/
[root@localhost local]# mkdir mysql
[root@localhost local]# cd mysql/
[root@localhost mysql]# mkdir data
[root@localhost mysql]# mkdir etc
[root@localhost mysql]# mkdir log
[root@localhost mysql]# mkdir /var/log/mysql
[root@localhost mysql]# mkdir /var/run/mysqld
[root@localhost mysql]# chown /var/run/mysqld -R
[root@localhost mysql]# chown mysql.mysql /var/log/mysql -R
[root@mysql mysql]# chown mysql.mysql /usr/local/mysql -R
[root@mysql mysql]# chmod +x /usr/local/mysql -R
(2)配置MySQL源码编译选项
[root@localhost mysql-5.5.32]#cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/usr/local/mysql/data
-DSYSCONFDIR=/usr/local/mysql/etc
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_MEMORY_STORAGE_ENGINE=1
-DWITH_READLINE=1 免费主机域名
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock
-DMYSQL_TCP_PORT=3306
-DENABLED_LOCAL_INFILE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
(3)编译安装
[root@localhost mysql-5.5.32]# make & make install
(4)配置第一个MySQL实例
[root@localhost mysql-5.5.32]# cd /usr/local/mysql
[root@localhost mysql]# cp support-files/my-medium.cnf /usr/local/mysql/etc/my.cnf
[root@localhost mysql]# vi /usr/local/mysql/etc/my.cnf[client]#password = your_passwordport = 3306socket = /usr/local/mysql/mysqld.sock# Here follows entries for some specific programs# The MySQL server[mysqld]port = 3306socket = /usr/local/mysql/mysqld.sockskip-external-lockingkey_buffer_size = 16Mmax_allowed_packet = 1Mtable_open_cache = 64sort_buffer_size = 512Knet_buffer_length = 8Kread_buffer_size = 256Kread_rnd_buffer_size = 512Kmyisam_sort_buffer_size = 8Mdatadir=/usr/local/mysql/datadefault-storage-engine=Innodbslow-query-log-file=/usr/local/mysql/log/slow.loglog-error=/usr/local/mysql/log/err.logpid-file=/usr/local/mysql/mysql3306.pidserver_id=1character_set_server = utf8wait-timeout=30max_connections = 512log-bin =/usr/local/mysql/log/binlogsync_binlog=1slow-query-log=1long-query-time=1general-log=1#general-log-file=/data/mysql/log/dml.loglower_case_table_names=1log_bin_trust_function_creators=1skip-slave-startbinlog-ignore-db=mysqlbinlog-ignore-db=information_schemabinlog-ignore-db=performance_schemareplicate_ignore_db=mysqlreplicate_ignore_db=information_schemareplicate_ignore_db=performance_schemaexpire-logs-days=10
[root@localhost mysql]# cd /usr/local/mysql/scripts/
[root@localhost scripts]# ./mysql_install_db –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data &
[root@localhost bin]# cd /usr/local/mysql/bin
[root@localhost bin]#/usr/local/mysql/bin/mysqld_safe –defaults-file=/usr/local/mysql/etc/my.cnf & –安全模式启动
[1] 28869
[root@localhost bin]# 131016 20:07:13 mysqld_safe Logging to ‘/usr/local/mysql/data/localhost.localdomain.err’.
131016 20:07:14 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
查看服务是否启动成功
[root@localhost bin]# netstat -tlnap | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 29147/mysqld
[root@localhost bin]#ps -ef | grep mysql
如若启动之后的环境变量与配置文件my.cnf的指定量不同,则查看/etc/下是否有my.cnf文件存在干扰设置的生效,将/etc/my.cnf删除,重启数据库再次查看指定量是否生效。
登录MySQL并修改root用户密码
[root@localhost bin]# ./mysqladmin -uroot password ‘newpasswd’
[root@localhost bin]# ./mysql -uroot -pnewpasswd
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.5.32-log Source distribution
Copyright (c) 2000, 2013,Oracleand/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.
mysql> exit安装第二个MySQL数据库
(1)清理配置信息
[root@localhost bin]# cd /usr/local/mysql-5.5.32
[root@localhost mysql-5.5.32]# make clean
[root@localhost mysql-5.5.32]# rm -rf CMakeCache.txt
(2)创建所需要的文件目录
[root@localhost mysql-5.5.32]# cd /usr/local/
[root@localhost local]# mkdir mysql3307
[root@localhost local]# cd mysql3307/
[root@localhost mysql3307]# mkdir data
[root@localhost mysql3307]# mkdir etc
[root@localhost mysql3307]# mkdir log
[root@localhost mysql3307]# chown mysql.mysql /usr/local/mysql3307 -R
(3)配置第二个实例的编译信息
[root@localhost bin]# cd /usr/local/mysql-5.5.32
[root@mysql mysql-5.5.17]# rm -rf CMakeCache.txt
[root@localhost mysql-5.5.32]# cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql3307
-DMYSQL_DATADIR=/usr/local/mysql3307/data
-DSYSCONFDIR=/usr/local/mysql3307/etc
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_MEMORY_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DMYSQL_UNIX_ADDR=/tmp/mysqld3307.sock
-DMYSQL_TCP_PORT=3307
-DENABLED_LOCAL_INFILE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
(4)编译安装
[root@localhost mysql-5.5.32]# make & make install
(5)配置第二个MySQL实例
[root@localhost mysql-5.5.32]# cd /usr/local/mysql3307
[root@localhost mysql3307]# cp support-files/my-medium.cnf /usr/local/mysql3307/etc/my.cnf
[root@localhost mysql3307]# vi /usr/local/mysql3307/etc/my.cnf[client]port = 3307socket = /usr/local/mysql3307/mysqld3307.sock# Here follows entries for some specific programs# The MySQL server[mysqld]port = 3307socket = /usr/local/mysql免费主机域名3307/mysqld3307.sockskip-external-lockingkey_buffer_size = 16Mmax_allowed_packet = 1Mtable_open_cache = 64sort_buffer_size = 512Knet_buffer_length = 8Kread_buffer_size = 256Kread_rnd_buffer_size = 512Kmyisam_sort_buffer_size = 8Mdatadir=/usr/local/mysql3307/datadefault-storage-engine=Innodbslow-query-log-file=/usr/local/mysql3307/log/slow.loglog-error=/usr/local/mysql3307/log/err.log
[root@localhost mysql3307]# cd /usr/local/mysql3307/scripts/
[root@localhost scripts]# ./mysql_install_db –user=mysql –basedir=/usr/local/mysql3307 –datadir=/usr/local/mysql3307/data &
[root@localhost scripts]# cd /usr/local/mysql3307/bin
[root@localhost bin]# /usr/local/mysql3307/bin/mysqld_safe –defaults-file=/usr/local/mysql3307/etc/my.cnf &
131016 20:40:27 mysqld_safe Logging to ‘/usr/local/mysql3307/data/localhost.localdomain.err’.
131016 20:40:27 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql3307/data
查看服务是否启动成功
[root@localhost bin]# netstat -tlnap | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 29147/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 7447/mysqld
登录MySQL并修改root用户密码
[root@localhost bin]# ./mysqladmin -uroot password ‘eisoo.com123’
[root@localhost bin]# ./mysql -uroot -peisoo.com123
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.5.32-log Source distribution
Copyright (c) 2000, 2013, 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.
mysql> exit
增加系统环境变量
[root@localhost /]# vi /etc/profile
增加一行:export PATH=/usr/local/mysql/bin:/usr/local/mysql3307/bin:$PATH
[root@localhost /]# source /etc/profile
[root@localhost /]# export $PATH
分别启动不同实例:
[root@localhost /]# /usr/local/mysql/bin/mysqld_safe –defaults-file=/usr/local/mysql/etc/my.cnf &
[root@localhost /]#/usr/local/mysql3307/bin/mysqld_safe –defaults-file=/usr/local/mysql3307/etc/my.cnf &
分别登陆不同实例:
[root@localhost /]# mysql -uroot -pnewpasswd -S /tmp/mysqld.sock
[root@localhost /]# mysql -uroot -pnewpasswd -S /tmp/mysqld3307.sock
启动还是太麻烦,可以这样做:
[root@localhost /]#ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql3306
[root@localhost /]#ln -s /usr/local/mysql3307/support-files/mysql.server /etc/init.d/mysql3307
给mysql用户添加权限:
[root@localhost /]# chmod -R 755 /usr/local/mysql/data
[root@localhost /]# chmod -R 755 /usr/local/mysql3307/data
分别启动实例对应的服务:
[root@localhost tmp]# service mysql3306 start
Starting MySQL. [确定]
[root@localhost tmp]# service mysql3307 start
Starting MySQL. [确定]
查看服务:
[root@localhost tmp]# netstat -tlnap | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 10759/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 11097/mysqld
将服务添加到系统服务中,使其开机自动启动。
[root@localhost /]# chkconfig –add mysql3306
[root@localhost /]# chkconfig –add mysql3307
多实例的平滑关闭:
[root@localhost /]# mysqladmin -u root -p -S –socket=/usr/local/mysql/mysqld3306.sock shutdown
[root@localhost /]# mysqladmin -u root -p -S –socket=/usr/local/mysql3307/mysqld3307.sock shutdown二.mysql主从配置1.修改master数据库的my.cnf文件
# vi /etc/my.cnf
[mysqld]
basedir =/data/mysql
datadir =/data/mysql/data
port =3306
server_id =1
socket = /data/mysql/mysql.sock
pid-file=/data/mysql/mysql.pid
character_set_server = utf8
wait-timeout=30
max_connections = 512
default-storage-engine = Innodb
log-bin =/data/mysql/log/binlog
sync_binlog=1
slow-query-log=1
long-query-time=1
slow-query-log-file=/data/mysql/log/slow.log
log-error=/data/mysql/log/err.log
general-log=1
general-log-file=/data/mysql/log/dml.log
lower_case_table_names=1
log_bin_trust_function_creators=1
skip-slave-start
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
replicate_ignore_db=mysql
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema
expire-logs-days=10
[mysql.server]
user=mysql
basedir=/data/mysql
[client]
socket=/data/mysql/mysql.sock(注意:1.修改后可以因为文件夹不存在,或者文件夹权限问题无法写入导致启动数据库失败)
# mkdir /data/mysql/log && chown mysql.mysql /data/mysql –R
2.如果没有[client]条件的话,启动时会报错ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2))
启动master主库
# service mysql start
Starting MySQL…… SUCCESS!2.修改slave从库的配置文件(/etc/my.cnf)
# vi /etc/my.cnf
[mysqld]
basedir =/data/mysql
datadir =/data/mysql/data
port =3306
server_id =3 –与主库不同即可
socket = /data/mysql/mysql.sock
pid-file=/data/mysql/mysql.pid
character_set_server = utf8
wait-timeout=30
max_connections = 512
default-storage-engine = Innodb
log-bin =/data/mysql/log/binlog
sync_binlog=1
log-error=/data/mysql/log/err.log
relay-log-index =/data/mysql/relaylog/relaylogindex
relay-log-info-file =/data/mysql/relaylog/relayloginfo
relay-log = /data/mysql/relaylog/relaylog
slow-query-log=1
long-query-time=1
slow-query-log-file=/data/mysql/log/slow.log
log-error=/data/mysql/log/err.log
general-log=1
general-log-file=/data/mysql/log/dml.log
lower_case_table_names=1
log_bin_trust_function_creators=1
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
replicate_ignore_db=mysql
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema
expire-logs-days=10
read-only
[mysql.server]
user=mysql
basedir=/data/mysql
[client]
socket=/data/mysql/mysql.sock
(注意:1.修改后可以因为文件夹不存在,或者文件夹权限问题无法写入导致启动数据库失败
# mkdir /data/mysql/relaylog/ && # mkdir /data/mysql/log/ && # chown mysql.mysql /data/mysql/ -R
2.如果没有[client]条件的话,启动时会报错ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2))3.master数据库锁表(以便导出库时无数据操作干扰&获取二进制坐标)
授权主从复制的用户‘longshine’登录密码为‘longshine’
mysql>grant replication slave,replication client on *.* to longshine@’192.168.81.121′ identified by ‘longshine’;
Query OK, 0 rows affected (0.22 sec)
锁表便于down数据
mysql> flush tables with read lock; –将主库锁表,保持主从的一致性
Query OK, 0 rows affected (0.05 sec)
导出数据
# mysqldump -uroot -p –all-databases >>/home/mysql/all.sql
Enter password: ##—–(输入密码)
从库导入数据
#/usr/local/mysql3307/bin/mysql -uroot -p –socket=/usr/local/mysql3307/mysqld3307.sock

Enter password: ##—–(输入密码)
查看主库的二进制日志状态
mysql> show master status;
mysql> show master statusG
*************************** 1. row ***************************
File: binlog.000004
Position: 335
Binlog_Do_DB:
Binlog_Ignore_DB: mysql,information_schema,performance_schema
Executed_Gtid_Set:
1 row in set (0.00 sec)
从库依据主库的二进制日志状态设置与主库同步
mysql> change master to master_host = ‘192.168.81.14’,master_port=3306,master_user=’longshine’,master_password=’longshine’,master_log_file=’ binlog.000004′,master_log_pos=335;4.解锁主库
主库登录执行
mysql> unlock tables;
启动从库复制线程
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
查看从库复制状态
mysql> show slave statusG
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.81.13
Master_User: longshine
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000004
Read_Master_Log_Pos: 120
Relay_Log_File: relaylog.000007
Relay_Log_Pos: 280
Relay_Master_Log_File: binlog.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB: mysql,information_schema,performance_schema
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 120
Relay_Log_Space: 606
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: d67ab0e7-6044-11e5-8147-000c299db641
Master_Info_File: /data/mysql/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)
(注:如果显示Slave_IO_Running: connecting,首先在主库查看主从传输用户“longshine”的权限是否出现问题,然后关闭从库线程,修改主库用户权限,重启数据库)
重建备库报错处理:
160402 9:44:24 [ERROR] Failed to open the relay log ‘./mysql-relay-bin.000005’ (relay_log_pos 1001920)
160402 9:44:24 [ERROR] Could not find target log during relay log initialization
160402 9:45:16 [ERROR] Failed to open the relay log ‘./mysql-relay-bin.000005’ (relay_log_pos 1001920)
160402 9:45:16 [ERROR] Could not find target log during relay log initialization
160402 9:45:58 [ERROR] Failed to open the relay log ‘./mysql-relay-bin.000005’ (relay_log_pos 1001920)
160402 9:45:58 [ERROR] Could not find target log during relay log initialization分析应该是由于mysql-relay-bin.index中仍然保存着旧relay日志文件的路径,而这些路径下又找不到合适的文件,因此报错。对于这类问题解决起来是比较简单的,重置slave的参照即可,执行命令如下:mysql> reset slave;Query OK, 0 rows affected (0.00 sec)mysql> change master to master_host = ‘192.168.81.121’,master_port=3306,master_user=’longshine’,master_password=’longshine’,master_log_file=’mysql-bin.000002′,master_log_pos=9187015;Query OK, 0 rows affected (0.21 sec)mysql> start slave;Query OK, 0 rows affected (0.02 sec)看完了这篇文章,相信你对“Linux下Mysql如何安装多实例和主从配置”有了一定的了解,如果想了解更多相关知识,欢迎关注云技术行业资讯频道,感谢各位的阅读!

相关推荐: 什么是Redis Cluster

本篇内容介绍了“什么是Redis Cluster”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!=Redis Cluster是Redis的分布式解决方案,在Red…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册