MYSQL集群搭建指引文档
mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离

mysql+mycat搭建稳定⾼可⽤集群,负载均衡,主备复制,读写分离数据库性能优化普遍采⽤集群⽅式,oracle集群软硬件投⼊昂贵,今天花了⼀天时间搭建基于mysql的集群环境。
主要思路简单说,实现mysql主备复制-->利⽤mycat实现负载均衡。
⽐较了常⽤的读写分离⽅式,推荐mycat,社区活跃,性能稳定。
测试环境MYSQL版本:Server version: 5.5.53,到官⽹可以下载WINDWOS安装包。
注意:确保mysql版本为5.5以后,以前版本主备同步配置⽅式不同。
linux实现思路类似,修改f即可。
A主mysql。
192.168.110.1:3306, ⽤户root,密码root。
操作系统:win7 x64,内存:4g安装路径:C:\Program Files\MySQL\MySQL Server 5.5\binB备mysql。
192.168.110.2:3306, ⽤户root,密码root。
操作系统:win2003 x64,内存:1g安装路径:C:\Program Files\MySQL\MySQL Server 5.5\binA主、B备的mysql中创建sync_test数据库实现mysql主备复制主要思路:A主mysql开启⽇志,B备mysql读取操作⽇志,同步执⾏。
⼀般为主备同步,主主同步不推荐使⽤。
配置A主mysql1)修改my.ini。
需要在log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log"的相关位置创建log⽬录,以及mysql-bin.log⽂件。
[mysqld]server-id=1 #主机标⽰,整数port=3306log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log" #确保此⽂件可写read-only=0 #主机,读写都可以binlog-do-db=sync_test #需要备份数据库,多个写多⾏binlog-ignore-db=mysql #不需要备份的数据库,多个写多⾏2)允许MYSQL远程访问#登录mysql console进⼊%home%/bin,执⾏mysql -uroot -proot#授权。
Mariadb-galera集群配置

MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的。
MariaDB Galera Cluster 介绍MariaDB集群是MariaDB同步多主机集群。
它仅支持XtraDB/ InnoDB存储引擎(虽然有对MyISAM实验支持 - 看wsrep_replicate_myisam系统变量)。
主要功能:●同步复制●真正的multi-master,即所有节点可以同时读写数据库●自动的节点成员控制,失效节点自动被清除●新节点加入数据自动复制●真正的并行复制,行级●用户可以直接连接集群,使用感受上与MySQL完全一致优势:●因为是多主,所以不存在Slavelag(延迟)●不存在丢失事务的情况●同时具有读和写的扩展能力●更小的客户端延迟●节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的技术:Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。
Galera插件保证集群同步数据,保持数据的一致性,靠的就是可认证的复制,工作原理如下图:当客户端发出一个commit的指令,在事务被提交之前,所有对数据库的更改都会被write-set收集起来,并且将 write-set 纪录的内容发送给其他节点。
write-set 将在每个节点进行认证测试,测试结果决定着节点是否应用write-set更改数据。
如果认证测试失败,节点将丢弃 write-set ;如果认证测试成功,则事务提交。
一.mariadb集群配置1.安装环境准备安装MariaDB集群至少需要3台服务器(如果只有两台的话需要特殊配置,请参照官方文档)在这里,我列出试验机器的配置:操作系统版本:CentOS7.3、mariadb10.1.21hmcloud-Flow01:10.199.10.101 hmcloud-Flow02:10.199.10.102 hmcloud-Flow03:10.199.10.103为了保证节点间相互通信,需要禁用防火墙设置:在三个节点分别执行命令:systemctl stop firewalldsystemctl enable firewalld如需要开启防火墙,需要开放mariadb端口和4567端口,并开启组播(keepalived),实测firewall开启后即使开放端口和协议也会导致haproxy不能转发,如需使用防火墙功能建议更换成iptables.firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface eth0 --destination 224.0.0.18 --protocol vrrp -j ACCEPTfirewall-cmd --add-port=4567/tcp --permanentfirewall-cmd --reload关闭selinux:sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config,setenforce 0host解析,分别修改三台机器/etc/hosts,添加对应IP和主机名创建mysql目录,挂载磁盘mkdir /data/mount /dev/sdb /data/vim /etc/fstab添加挂载项mkdir /data/mysql升级内核,设置新内核为默认kernel ,启用BBR协议rpm --import https:///rpm -Uvh /elrepo-release-7.0-2.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y[root@Ms_NxEra ~]# cat /boot/grub2/grub.cfg |grep 4.[root@Ms_NxEra ~]# grub2-set-default "CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core)"echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.confecho "net.core.default_qdisc=fq">> /etc/sysctl.conf配置安装源[root@hmcloud-Flow01 mariadb]# cat /etc/yum.repos.d/mariadb.repo [mariadb]name = MariaDBbaseurl = /10.1.21/centos7-amd64/gpgkey=https:///RPM-GPG-KEY-MariaDBgpgcheck=12.安装 MariaDB Galera Cluster[root@hmcloud-Flow01 ~]#yum install MariaDB-server MariaDB-client galera -y3.配置 MariaDB Galera Cluster初始化数据库服务,只在一个节点进行[root@hmcloud-Flow01 mariadb]# systemctl start mariadb[root@hmcloud-Flow01 mariadb]# mysql_secure_installation关闭数据库,修改 /etc/f.d/f[root@hmcloud-Flow01 ~]# systemctl stop mariadb[root@hmcloud-Flow01 ~]# vim /etc/f.d/f[galera]wsrep_provider = /usr/lib64/galera/libgalera_smm.so#wsrep_cluster_address = "gcomm://"wsrep_cluster_address = "gcomm://10.199.10.101,10.199.10.102,10.199.10.103" wsrep_node_name = hmcloud-Flow01 #各节点名称,另外的节点需要修改wsrep_cluster_name=hmcloudwsrep_node_address=10.199.10.101 #节点IP,另外的节点需要修改wsrep_on=ONbinlog_format=ROWdefault_storage_engine=InnoDBinnodb_autoinc_lock_mode=2#bind-address=0.0.0.0wsrep_slave_threads=1innodb_flush_log_at_trx_commit=0innodb_buffer_pool_size=122Mwsrep_sst_method=rsync[embedded][mariadb]datadir=/data/mysqlsocket=/var/lib/mysql/mysql.sockport=3333innodb_rollback_on_timeout=1innodb_lock_wait_timeout=600max_connections=350skip-name-resolvelog-bin=mysql-binauto-increment-offset=1auto-increment-increment=2expire_logs_days =10#skip-grant-tables提示:将此文件复制到其余节点,注意要把wsrep_node_name和wsrep_node_address 改成相应节点的 hostname和ip。
Mariadb集群配置参考

云集平台数据库集群从搭建到对接研发部2016年7月20日Kelly目录MariaDB集群搭建: (3)1.在各节点安装MariaDB (3)2.设置开机启动MariaDB (3)3.设置MariaDB的root密码,并做安全加固 (3)4.确认MariaDB已正确安装并处于运行状态 (3)5.创建用于同步数据库的SST帐号 (4)6.创建f文件 (4)7.确认本机防火墙上开放了所需TCP3306和TCP4567的端口 (4)8.重起MariaDB服务 (4)9.确认MySQL的3306端口和wsrep的4567端口处于监听状态 (5)10.安装新节点 (5)Mariadb集群搭建完成后的对接: (5)附录: (5)MariaDB集群搭建:1.在各节点安装MariaDB[root@localhost~]#vi/etc/yum.repos.d/mariadb.repo写入如下信息#MariaDB10.1CentOS repository list#/mariadb/repositories/[mariadb]name=MariaDBbaseurl=/5.5/centos6-amd64gpgkey=https:///RPM-GPG-KEY-MariaDBgpgcheck=1enabled=1[root@localhost~]#yum install MariaDB-Galera-server galera MariaDB-client rsync2.设置开机启动MariaDB[root@mdb-01~]#chkconfig mysql on[root@mdb-01~]#service mysql start3.设置MariaDB的root密码,并做安全加固[root@mdb-01~]#/usr/bin/mysql_secure_installation4.确认MariaDB已正确安装并处于运行状态[root@mdb-01~]#mysql-u root-pEnter password:Welcome to the MariaDB mands end with;or g.Your MariaDB connection id is11Server version:5.5.29-MariaDB MariaDB Server,wsrep_23.7.3.rXXXXCopyright(c)2000,2013,Oracle,Monty Program Ab and others.Type'help;'or'h'for help.Type'c'to clear the current input statement.MariaDB[(none)]>注意查看是否有"wsrep_23.7.3.rXXXX"的输出。
服务器集群搭建

服务器集群搭建在当今的数字化时代,对服务器的需求与日俱增。
无论是大型企业,还是小型组织,都需要一个高效、稳定、可扩展的服务器架构来支持其业务运营。
然而,单一的服务器往往无法满足这些需求,因此我们需要搭建服务器集群,以提高服务器的性能、可用性和可扩展性。
一、服务器集群的概念服务器集群是由多台服务器组成的系统,通过负载均衡技术和网络设备将这些服务器整合成一个整体,以提供更高效、更稳定、更可扩展的服务。
当访问请求到来时,负载均衡器将根据预设的规则将请求分配给不同的服务器,从而平衡每台服务器的负载,提高整体性能。
二、搭建服务器集群的步骤1、确定需求在搭建服务器集群之前,我们需要明确我们的需求。
这包括我们需要支持多少用户,需要什么样的性能,需要多少存储空间等等。
这些需求将直接影响我们的服务器集群的设计。
2、选择合适的服务器选择合适的服务器是搭建服务器集群的重要步骤。
我们需要考虑服务器的性能、可用性、可扩展性等因素。
我们还需要考虑服务器的品牌、型号、配置等因素,以确保我们的服务器可以满足我们的需求。
3、安装操作系统和软件在每台服务器上安装相同的操作系统和软件是搭建服务器集群的必要步骤。
这可以确保我们的服务器具有一致的环境,从而避免由于环境差异导致的问题。
4、配置负载均衡器负载均衡器是服务器集群的核心组件之一。
我们需要选择一个适合我们的负载均衡器,并将其配置为根据预设的规则将请求分配给不同的服务器。
5、配置网络设备网络设备是服务器集群的重要组成部分。
我们需要配置网络设备,以确保服务器之间的通信畅通无阻。
这包括配置路由、交换机、防火墙等设备。
6、测试和优化在完成上述步骤后,我们需要进行测试和优化,以确保我们的服务器集群可以正常工作并达到预期的性能。
这包括对服务器进行压力测试、对负载均衡器进行监控和调整等。
三、总结搭建服务器集群是一个复杂的过程,需要考虑多种因素。
然而,通过合理的规划和正确的配置,我们可以构建一个高效、稳定、可扩展的服务器集群,以满足我们的需求并提供优质的服务。
mysql主主集群搭建

利用Percona-XtraDB-Cluster-server 搭建mysql 主主集群配置yum源指向192.168.1.35下的源[perconcluster]name=perconclusterbaseurl=http://192.168.1.35/Percona-XtraDB-Clusterenabled=1gpgcheck=0yum remove mysql-libsyum install Percona-XtraDB-Cluster-server-55#集群中的节点都需要修改[root@mysql1 yum.repos.d]# cat /etc/f[mysqld]datadir=/var/lib/mysqluser=mysql# Path to Galera librarywsrep_provider=/usr/lib64/libgalera_smm.so# Cluster connection URL contains the IPs of node#1, node#2 and node#3wsrep_cluster_address=gcomm://192.168.70.71,192.168.70.72,192.168.70.73# In order for Galera to work correctly binlog format should be ROWbinlog_format=ROW# MyISAM storage engine has only experimental supportdefault_storage_engine=InnoDB# This is a recommended tuning variable for performanceinnodb_locks_unsafe_for_binlog=1# This changes how InnoDB autoincrement locks are managed and is a requirement for Galerainnodb_autoinc_lock_mode=2# Node #1 address(此处填写相应服务器的ip地址)wsrep_node_address=192.168.70.71# SST methodwsrep_sst_method=xtrabackup# Cluster namewsrep_cluster_name=my_centos_cluster# Authentication for SST methodwsrep_sst_auth="sstuser:s3cret"### first node ####/etc/init.d/mysql start --wsrep-cluster-address="gcomm://"mysql> show status like 'wsrep%';+----------------------------+--------------------------------------+| Variable_name | Value |+----------------------------+--------------------------------------+| wsrep_local_state_uuid | c2883338-834d-11e2-0800-03c9c68e41ec |...| wsrep_local_state | 4 || wsrep_local_state_comment | Synced |...| wsrep_cluster_size | 1 || wsrep_cluster_status | Primary || wsrep_connected | ON |...| wsrep_ready | ON |+----------------------------+--------------------------------------+mysql@percona1> UPDATE er SET password=PASSWORD("Passw0rd") where user=’root’;mysql@percona1> FLUSH PRIVILEGES;mysql@percona1> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 's3cret';mysql@percona1> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';mysql@percona1> FLUSH PRIVILEGES;mysql> grant process on *.* to 'clustercheckuser'@'localhost' identified by'clustercheckpassword!';Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)####第二个节点######/etc/init.d/mysql startmysql> show status like 'wsrep%';+----------------------------+--------------------------------------+| Variable_name | Value | +----------------------------+--------------------------------------+| wsrep_local_state_uuid | c2883338-834d-11e2-0800-03c9c68e41ec | ...| wsrep_local_state | 4 || wsrep_local_state_comment | Synced | ...| wsrep_cluster_size | 2 || wsrep_cluster_status | Primary || wsrep_connected | ON | ...| wsrep_ready | ON | +----------------------------+--------------------------------------+40 rows in set (0.01 sec)。
Windows 2019服务器群集安装word资料7页

Windows 2019服务器群集安装安装概述在安装历程中,安装某些节点时将封闭其他节点。
这个步骤有帮于包管附减到共享总线的磁盘上的数据不会拾得或受到损坏。
该多个节点同时实验写入一个已蒙到群集硬件维护的磁盘时,可能会呈现数据丧失或受到粉碎的环境。
与Microsoft Windows 2000解统不同,Windows 2019 Server中新磁盘的默认装载方法有所变革。
在Windows 2019中,体系不会自动装载这些引诱分区不在统一总线的逻辑磁盘,也不会为其分配驱动器盘符。
这有帮于确保在繁杂的SAN情况中,服务器不会装载可能属于另一台服务器的驱动器。
固然服务器不会从动装载驱动器,然而仍旧筑议您根据下列步骤,以确保共享磁盘不会受到粉碎。
使用下表肯定在每个步调必须封闭的节点和存储设置装备摆设。
本指北中的步骤合用于单节点群集。
如果您在危卸节点数多于二个的群集,则"节点2"列将列没其他所有节点所需的状况。
在配置"群集"服务硬件前,必须后执行多少个步骤。
这些步骤是:在每个节点上安装Windows Server 2019 Enterprise Edition或Windows Server 2019 Datacenter Edition操作解统。
设置网络。
设置磁盘。
在第一个节点上开端安装群集服务前,必须后在每个群集节点上执行这些步骤。
要配置群集服务,您必须以一个具备所有节点管理权限的帐户登录,sexy lacoste swimwear。
每一个节点皆必须非统一个域的败员。
如因您抉择将此中一个节点息为域节制器,则应在雷同的子网上再设置一个域控制器,以即解除单点妨碍,并对当节点举行保护。
安置Windows Server 2019操纵体系请参见您从Windows Server 2019操作系统硬件包中失去的文档,以在群集的每个节点上安装该系统。
配置群集服务以前,您必须在本地使用一个本地管理员构成员的域帐户登录。
mysql8集群搭建

mysql8集群搭建1.下载必要的rpm包我系统是centos 7 的所以选择红帽的操作系统2.安装mysql 先⽤sudo root运⾏,我这是直接su root切换了root⽤户yum remove mariadb-libsrpm -ivh mysql-community-common-8.0.20-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-8.0.20-1.el7.x86_64.rpmrpm -ivh mysql-community-client-8.0.20-1.el7.x86_64.rpmrpm -ivh mysql-community-server-8.0.20-1.el7.x86_64.rpm3.启动mysqlservice mysqld start4.查看密码grep 'temporary password' /var/log/mysqld.log5.修改密码mysql -uroot -p 输⼊密码#Root_123456 是新密码,如果出现ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 是因为密码太简单,要改成带特殊字符的复杂密码alter user 'root'@'localhost' IDENTIFIED BY '#Root_123456';修改成功6:设置允许远程登录use mysql;update user set host='%' where user = 'root';然后重启mysqlservice mysqld restart7.搭建集群 准备三台集群修改hosts⽂件vi /etc/hosts192.168.10.11 linux1192.168.10.12 linux2192.168.10.13 linux3 设置免密ssh-keygen -t rsassh-copy-id linux1ssh-copy-id linux2ssh-copy-id linux3 设置远程登录并且刷新grant all privileges on *.* to 'root'@'%' with grant option;flush privileges;安装 mysqlshrpm -ivh mysql-shell-8.0.20-1.el7.x86_64.rpm登录linux2安装mysql8在linux2/linu3从linux1 拷贝所有rpm包到本地scp -r linux1:/opt/software/ /opt/software/然后安装然后⽤mysqlsh搭建shell.connect('root@linux1:3306')dba.configureLocalInstance()shell.connect('root@linux2:3306')dba.configureLocalInstance()shell.connect('root@linux3:3306')dba.configureLocalInstance()shell.connect('root@linux1:3306')var cluster=dba.createCluster("MySQL_Cluster")如果不想⽤root⽤户,建议⽤root⽤户set sql_log_bin=0;create user rpl_user@'%' identified by '#Root_123456';grant replication slave,replication client on *.* to rpl_user@'%'; create user rpl_user@'127.0.0.1' identified by '#Root_123456';grant replication slave,replication client on *.* to rpl_user@'127.0.0.1'; create user rpl_user@'localhost' identified by '#Root_123456';grant replication slave,replication client on *.* to rpl_user@'localhost'; set sql_log_bin=1;change master tomaster_user='rpl_user',master_password='#Root_123456'for channel 'group_replication_recovery';install plugin group_replication soname 'group_replication.so';set global group_replication_bootstrap_group=on;start group_replication;set global group_replication_bootstrap_group=off; 关闭防⽕墙# 关闭防⽕墙systemctl stop firewalld.service# 禁⽤防⽕墙systemctl disable firewalld.servicevi /etc/selinux/configSELINUX=disabled安装mysql-routerrpm -ivh mysql-router-community-8.0.20-1.el7.x86_64.rpmvim /etc/mysqlrouter/mysqlrouter.conf[DEFAULT]logging_folder = /var/log/mysqlrouterruntime_folder = /var/run/mysqlrouterconfig_folder = /etc/mysqlrouter[logger]level = INFO[routing:read_write]bind_address = 192.168.10.11bind_port = 7001mode = read-writedestinations = linux1:3306,linux2:3306protocol=classicmax_connections=1024[routing:read_only]bind_address = 192.168.10.11bind_port = 7002mode = read-onlydestinations = linux1:3306,linux2:3306protocol=classicmax_connections=1024# If no plugin is configured which starts a service, keepalive# will make sure MySQL Router will not immediately exit. It is# safe to remove once Router is configured.[keepalive]interval = 60 重启mysqlroutersystemctl restart mysqlrouter。
MySQL集群部署与配置指南

MySQL集群部署与配置指南引言MySQL是一种开源的关系型数据库管理系统,被广泛应用于各种应用程序中。
在处理大规模数据和高并发访问时,单个MySQL服务器可能无法满足需求。
为了提高性能和可用性,使用MySQL集群来部署和配置数据库是一个不错的选择。
本文将详细介绍MySQL集群部署和配置的指南,帮助读者了解集群的概念,并提供一些实用的技巧。
1. 集群概述1.1 什么是MySQL集群MySQL集群是指由多个MySQL服务器组成的集合,通过共享数据和负载均衡来提供高性能和高可用性。
集群中的每个节点都存储相同的数据,并且可以处理来自客户端的查询请求。
如果其中一个节点发生故障,其他节点将继续提供服务,确保数据的有效性和可访问性。
1.2 集群的优势MySQL集群具有以下优势:- 高可用性:即使其中一个节点发生故障,其他节点也可以继续提供服务,避免了单点故障的风险。
- 负载均衡:通过将查询请求分发到不同的节点上,集群可以平衡负载,提高整个系统的性能。
- 扩展性:可以根据需求增加或减少集群节点,以应对不断增长的数据和用户访问量。
- 数据冗余:通过复制数据到多个节点,可以提供数据的冗余备份,避免数据丢失的风险。
2. 部署MySQL集群2.1 硬件要求部署MySQL集群需要考虑以下硬件要求:- 多台服务器:每个节点都需要一个独立的服务器来承载MySQL服务。
- 网络连接:节点之间需要可靠的网络连接,以便进行数据同步和通信。
2.2 软件要求部署MySQL集群还需要满足以下软件要求:- MySQL数据库:每个节点都需要安装并配置MySQL数据库。
- 集群管理软件:可以使用各种集群管理软件,如MySQL Cluster、Galera Cluster或Percona XtraDB Cluster等。
2.3 数据同步配置为了保持每个节点上的数据一致性,需要配置数据同步机制。
可以使用MySQL的复制功能来实现数据同步。
具体步骤如下:- 在一个节点上设置为主节点(master),并启用二进制日志功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在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命令关掉防火墙就可以了。