当前位置:文档之家› MYSQL集群搭建指引文档

MYSQL集群搭建指引文档

在PCSERVER上安装MARIADB。

一、先检查主机的环境如果主机已经安装了MYSQL的早期版本,并且有MYSQL实例正在主机上运行,要先行清理早期的版本,具体步骤如下:1、优雅地停掉当前正在运行的MYSQL服务。

2、卸载MYSQL早期版本及其组件rpm -qa|grep -i mysql #查看已经安装的mysql相关包rpm -ev package_name #package_name包名比如:mysql-server-5.0.51b-1.el5 二、用YUM安装MARIADB具体步骤如下:1、cd /etc/yum.repos.d2、vi MariaDB.repo然后粘上官网上的内容(用CENTOS操作系统举例)Here is your custom MariaDB YUM repository entry for CentOS. Copy and paste it into a file under /etc/yum.repos.d/ (we suggest naming the file MariaDB.repo or something similar). See "Installing MariaDB with yum" for detailed information.3、执行yum -y install MariaDB-client MariaDB-server MariaDB-devel4、如果发现用YUM装时,代理服务器的网速下载太慢了导致超时然后报错退出,解决方案如下:A自己用个人电脑到官网下载列表中的RPM文件,B把自己下载好的五个RPM文件,全部上传到PCSERVER的/var/cache/yum/x86_64/6/mariadb/packages/目录下,C再次运行步骤3的语句。

三、在主机上启动多个MYSQL实例1、MYSQL多实例,需要单独的数据目录和绑定相应的唯一端口。

端口号的约定:因为默认绑定的端口为3306,所以多实例的情况下约定从3306开始,如启动两个实例则为3306,3307。

数据目录的约定:统一集群上所有PCSEVER的MYSQL实例的数据目录为/data1/mysql/data/$port,比如两个实例的情况下,则为:/data1/mysql/data/3306,/data1/mysql/data/3307注:这个数据目录需要自己手工创建2、初始化新的MYSQL数据库实例在创建好数据目录的前提下,运行如下命令:(举例:创建两个新的数据库实例)/usr/bin/mysql_install_db --basedir=/usr--datadir=/data1/mysql/data/3306 --user=mysql/usr/bin/mysql_install_db --basedir=/usr--datadir=/data1/mysql/data/3307 --user=mysql3、将数据目录及底下的所有子文件和子目录的所有权赋给mysql用户运行如下命令:chown -R mysql:mysql /data1/mysql(以上三步可以用一个角本来跑,ROOT用户跑脚本cd /data1mkdir mysqlcd mysqlmkdir datacd datamkdir 3306 3307/usr/bin/mysql_install_db --basedir=/usr --datadir=/data1/mysql/data/3306 --user=mysql/usr/bin/mysql_install_db --basedir=/usr --datadir=/data1/mysql/data/3307 --user=mysql chown -R mysql:mysql /data1/mysql)4、在MYSQL的HOME目录下添加多实例的启动配置文件:vi my_f,然后粘贴上如下内容:[mysqld_multi]mysqld = /usr/bin/mysqld_safemysqladmin = /usr/bin/mysqladminuser=root[mysqld1]server_id=你定的SERVERID,必须集群唯一,现在我用IP最后两位再加1位,如841 socket = /data1/mysql/data/3306/mysql.sockport = 3306datadir = /data1/mysql/data/3306plugin-dir=/usr/lib64/mysql/pluginlog-bin=mysql-bingeneral-log=1character-set-server = utf8collation_server=utf8_general_ci[mysqld2]server_id=你定的SERVERID,必须集群唯一,现在我用IP最后两位再加1位socket = /data1/mysql/data/3307/mysql.sockport = 3307datadir =/data1/mysql/data/3307plugin-dir=/usr/lib64/mysql/pluginlog-bin=mysql-bingeneral-log=1[mysqldump]quickmax_allowed_packet = 16Mcharacter-set-server = utf8collation_server=utf8_general_ci5用命令启动多实例(指定启动配置文件):/usr/bin/mysqld_multi --defaults-file=/home/mysql/my_f start 1,21,2为mysqld后面的数字6为两个MYSQL数据库实例的root用户更改密码,统一改为mysql(默认密码为空)mysqladmin -u root -h 127.0.0.1 -P 3306 passwordmysqladmin -u root -h 127.0.0.1 -P 3307 password(第一次执行没问题,但是第二次执行的时候可能会报错,还是建议启动服务后到数据库里面去修改初始密码,还有去掉一些不安全的用户)7改完密码后,再次修改多实例的记动配置文件my_f,将新改的密码配置进去,否则改密码后无法正常地用上述/usr/bin/mysqld_multi命令来启停MYSQL服务。

[mysqld_multi]mysqld = /usr/bin/mysqld_safemysqladmin = /usr/bin/mysqladminuser=rootpassword=mysql(加入这一行)还有一个问题就是登陆的时候,如果仅仅是用-P 3306 或者–P 3307可能不可以,所以最好还是用mysql ‐uroot ‐ppassword ‐S /data/dbdata_3308/mysql.sock指定sock文件在建立新的数据库前记得先把旧的服务停掉,还有把旧的数据文件目录删除掉。

四、配置MYSQL之间的双主、主从复制双主的结构如下:两个MYSQL实例之间是互为主从(MASTER-SLAVE)的关系,双向复制。

整个配置的过程中,最复杂的一步是事先要同步两个MYSQL实例之间的数据,使之一致,但由于测试集群一开始是一个空的数据库,所以这一步可以省略了。

只需如下步骤,1、创建复制数据专用的用户并且同时授权A 在MASTER1机84上运行,创建一个允许Master-2来访问的用户master2,密码为:123456GRANT REPLICATION SLAVE ON *.*TO 'master2'@'132.121.88.85' IDENTIFIED BY '123456';B 在MASTER285机上运行创建一个允许Master-2来访问的用户master1,密码为:123456GRANT REPLICATION SLAVE ON *.*TO 'master1'@'132.121.88.84' IDENTIFIED BY '123456';2、修改MySQL主配置文件Master-1上:[mysqld]auto-increment-increment = 2auto-increment-offset = 1Master-2上:[mysqld]auto-increment-increment = 2auto-increment-offset = 2修改完配置文件后记得要重启MYSQL实例3、互相通告二进制日志位置,具体位置参数有两个,就是下文中标红的两处地方。

请分别用show master status\G;去获得两者的值。

在Master-1上:CHANGE MASTER TOMASTER_HOST='132.121.88.85', MASTER_PORT=3307,MASTER_USER='master1',MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=456;在Master-2上:CHANGE MASTER TOMASTER_HOST='132.121.88.84', MASTER_USER='master2', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000007', MASTER_LOG_POS=456;4、启动复制(Replication)功能在两台主机上分别执行ERROR 1200 (HY000): Misconfigured slave: MASTER_HOST was not set; Fix in config file or with CHANGE MASTER TOmysql>change master to master_host='localhost', MASTER_PORT=3306, master_user='repl', master_password='repl', master_log_file='mysql-bin.000001', master_log_pos=0;mysql>>START SLAVE;配置到此完成!5 用show slave status 查看主从复制的状态,如果发现:error connecting to master 'master1@132.121.88.85:3307' - retry-time: 60 retries: 86400 message: Can't connect to MySQL server on '132.121.88.85' (113 "No route to host")基本上是因为要连接的主机开启了防火墙,登录到目录主机上用iptables –F命令关掉防火墙就可以了。

相关主题