dble安装zk及配置mysql主从模式

下载dble:latest,mysql:5.7,zookeeper:latest镜像

# 下载dble最新新镜像
docker pull actiontech/dble
# 下载mysql:5.7镜像
docker pull mysql:5.7
# 下载zookeeper最新镜像
docker pull zookeeper
# 检查镜像是否下载成功
docker images
REPOSITORY                               TAG       IMAGE ID       CREATED        SIZE
actiontech/dble                          latest    9988614a8e4b   7 months ago   755MB
mysql                                    5.7       efa50097efbd   3 days ago     462MB
zookeeper                                latest    6c0a15fc2e1a   7 days ago     279MB

创建目录,上传配置文件并执行docker-compose.yml

#创建目录
mkdir -p /app/dble_cluster
#切换到创建的目录下
cd /app/dble_cluster
#按docker-compose.yml中的挂载目录(volumes标签下:前的目录),创建对应的目录
mkdir -p zoo1/conf
mkdir -p zoo1/data
mkdir -p zoo1/datalog
cd /zoo1
ls -l
# 看到有刚才创建的目录,再创建其他目录
cd /app/dble_clustermkdir -p zoo2/conf
mkdir -p zoo2/data
mkdir -p zoo2/datalogmkdir -p zoo3/conf
mkdir -p zoo3/data
mkdir -p zoo3/datalogmkdir -p mysql1/conf
mkdir -p mysql1/logs
mkdir -p mysql1/datamkdir -p mysql2/conf
mkdir -p mysql2/logs
mkdir -p mysql2/datamkdir -p dble1/conf/
mkdir -p dble1/logsmkdir -p dble2/conf/
mkdir -p dble2/logs#创建完目录,再上传对应的配置到相应目录。参考yml中的挂载来上传
mysql/conf/my.cnf 中 server-id=1 两个要保持唯一性
上传start.sh到/app/dble_cluster目录下
#上传docker-compose.yml到该目录下
rz
#选择本地的docker-compose.yml
#执行docker-compose命令
docker-compose up -d
[root@localhost dble_cluster]# docker-compose up -d
[+] Running 7/0⠿ Container mysql2  Running                                                                                                                                              0.0s⠿ Container zoo3    Running                                                                                                                                              0.0s⠿ Container mysql1  Running                                                                                                                                              0.0s⠿ Container dble1   Running                                                                                                                                              0.0s⠿ Container zoo1    Running                                                                                                                                              0.0s⠿ Container zoo2    Running                                                                                                                                              0.0s⠿ Container dble2   Running   #查看dble,mysql,zookeepr的运行状态docker ps -a | grep dbledocker ps -a | grep mysqldocker ps -a | grep zookeepr#再查看dble的日志,看下有没有成功启动[root@localhost dble_cluster]# docker logs -f dble1
wait-for-it.sh: waiting 120 seconds for mysql1:3306
wait-for-it.sh: mysql1:3306 is available after 0 seconds
wait-for-it.sh: waiting 120 seconds for mysql2:3306
wait-for-it.sh: mysql2:3306 is available after 0 seconds
dble start in docker
Starting dble-server...
dble start finish
INFO   | jvm 1    | 2022/07/04 10:33:54 | Server execute ShutdownHook.
INFO   | jvm 1    | 2022/07/04 10:33:54 | 2022-07-04 10:33:54,086 Thread-2 WARN Unable to register Log4j shutdown hook because JVM is shutting down. Using SimpleLogger
INFO   | jvm 1    | 2022/07/04 10:33:54 | You use OuterHa or Cluster, no need to clean up ha process
STATUS | wrapper  | 2022/07/04 10:33:56 | <-- Wrapper Stopped
STATUS | wrapper  | 2022/07/04 10:46:27 | --> Wrapper Started as Daemon
STATUS | wrapper  | 2022/07/04 10:46:27 | Java Service Wrapper Community Edition 64-bit 3.5.40
STATUS | wrapper  | 2022/07/04 10:46:27 |   Copyright (C) 1999-2019 Tanuki Software, Ltd. All Rights Reserved.
STATUS | wrapper  | 2022/07/04 10:46:27 |     http://wrapper.tanukisoftware.com
STATUS | wrapper  | 2022/07/04 10:46:27 |
STATUS | wrapper  | 2022/07/04 10:46:27 | Launching a JVM...
INFO   | jvm 1    | 2022/07/04 10:46:27 | OpenJDK 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
INFO   | jvm 1    | 2022/07/04 10:46:27 | OpenJDK 64-Bit Server VM warning: CMSFullGCsBeforeCompaction is deprecated and will likely be removed in a future release.
INFO   | jvm 1    | 2022/07/04 10:46:27 | Listening for transport dt_socket at address: 8088
INFO   | jvm 1    | 2022/07/04 10:46:27 | WrapperManager: Initializing...
INFO   | jvm 1    | 2022/07/04 10:46:30 | Server startup successfully. dble version is [5.7.11-dble-3.21.10.0-97a3b6d73a49cb374020f930c59f82746220b424-20211119064810]. Please see logs in logs/dble.log
#以上就是正常启动的日志
#通过客户端登录dble的账号,或者命令行登录dble的账号
docker exec -it mysql1 mysql -uroot -p
Enter password:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
#这样就是启动成功了。

在已有mysql数据库前提下,配置mysql主从同步,验证高可用场景

  1. 先查看mysql容器的挂载目录
docker inspect gaea-mysql | grep Mounts --color -a50"Mounts": [{"Type": "bind","Source": "/app/gaea/mysql/conf","Destination": "/etc/mysql/conf.d","Mode": "rw","RW": true,"Propagation": "rprivate"},{"Type": "bind","Source": "/app/gaea/mysql/logs","Destination": "/logs","Mode": "rw","RW": true,"Propagation": "rprivate"},{"Type": "bind","Source": "/app/gaea/mysql/data","Destination": "/var/lib/mysql","Mode": "rw","RW": true,"Propagation": "rprivate"}],

可以看到Source目录在/app/gaea/mysql

  1. 先停止容器,再备份mysql数据库

    docker stop gaea-mysql
    

    备份mysql数据库

    cd /app/gaea/mysql/
    mv mysql mysql1
    
  2. 修改docker-compose.yml

    把dble1启动参数修改端口为3306,将mysql1的目录挂载到备份的目录下,在备份的conf目录下添加主节点配置。

[mysqld]
server-id=1
log-bin=mysql-bin
symbolic-links=0

mysql2的目录挂载到新的目录下/app/gaea/mysql2

先把mysql1复制一份为mysql2,再删除data,db,logs目录,再修改conf目录下的配置为slave节点

[mysqld]
server-id=2
#Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#也可以设置log-bin,让他在某个时刻成为主节点
log-bin=mysql-bin
#忽略表
replicate-wild-ignore-table=mysql.*

配置主从同步

有很多种配置主从同步的方法,可以总结为如下的步骤:

  • 1.在主服务器上,必须开启二进制日志机制和配置一个独立的ID
  • 2.在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号
  • 3.在开始复制进程前,在主服务器上记录二进制文件的位置信息
  • 4.如果在开始复制之前,数据库中已经有数据,就必须先创建一个数据快照(可以使用mysqldump导出数据库,或者直接复制数据文件)
  • 5.配置从服务器要连接的主服务器的IP地址和登陆授权,二进制日志文件名和位置
  1. 上传docker-compoe.yml到/root/dble,再使用docker-compse up -d 启动

  2. 启动成功后,docker 登录mysql1,在mysql中执行创建从库脚本

    # 先查看master节点已创建成功
    mysql> show master status;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000005 |      154 |              |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)

    再创建备份用户

    create user 'slave'@'%' identified by '123456';
    

    再受权

    GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
    flush privileges;
    

    重启mysql1

    docker restart mysql1
    

    如果存在原始数据,则需要执行该步骤,没有则跳过

    首先登陆数据库,然后刷新所有的表,同时给数据库加上一把锁,阻止对数据库进行任何的写操作

    flush tables with read lock;
    

    在锁表之后,再导出数据库里的数据(如果数据库里没有数据,可以忽略这一步)

    #先登录到mysql容器中
    docker exec -it mysql1 bash
    # 在mysql容器中创建backup目录
    mkdir backup
    # 再进行数据备份mysqldump -uroot -ppassword  -A  > /backup/all.sql
    # 再把容器中的备份数据复制到宿主机中
    docker cp 容器名/容器id:要拷贝的文件在容器里面的路径  要拷贝到宿主机的相应路径
    sudo docker cp mysql1:/backup/all.sql /app/gaea
    

    如果数据量很大,可以在导出时就压缩为原来的大概三分之一

    mysqldump -uroot -p'123456' -S /data/3306/data/mysql.sock --all-databases | gzip > /server/backup/mysql_bak.$(date +%F).sql.gz

    这时可以对数据库解锁,恢复对主数据库的操作

mysql > unlock tables;


再登录从数据库导入备份的数据~~~bash
# 先把宿主的备份文件复制到容器里面
docker  cp  要拷贝的文件路径    容器名:要拷贝到容器里面对应的路径
docker cp /app/gaea/all.sql mysql2:/home
# 登录容器
docker exec -it mysql2 bash
# 导入备份数据
mysql -uroot -ppassword < /home/all.sql

执行完这步可以看到从库中也有了主库的数据。 接下来执行从库主备关联

# 先登录mySql
docker exec -it mysql2 mysql -uroot -ppassword
# 再执行主备关联
change master to master_host='172.18.1.13', master_user='slave', master_password='123456', master_port=3307, master_log_file='mysql-bin.000005', master_log_pos=154, master_connect_retry=30;/** 上面的
master_host是主节点ip
master_user和master_password是刚才在master创建的备份用户和密码
master_port是主节点的mysql端口号
master_log_file是查看master的show master status;对应的file值。
master_log_pos的值是查看master的show master status;对应的Position的值。
**/
#启动从库拷贝
start slave;
# 查看主从同步状态
show slave status \G;
# 正常会看到这样的,Slave_IO_Running: YesSlave_SQL_Running: Yes
show slave status \G;
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 172.18.1.13Master_User: slaveMaster_Port: 3307Connect_Retry: 30Master_Log_File: mysql-bin.000006Read_Master_Log_Pos: 154Relay_Log_File: mysql2-relay-bin.000003Relay_Log_Pos: 367Relay_Master_Log_File: mysql-bin.000006Slave_IO_Running: YesSlave_SQL_Running: Yes
  1. 验证主从同步,及dble停止一个,另一个还能不能正常运行,验证mysql主从节点是否可以同步数据。读写是否分离。

    #验证主从同步,在主节点创建数据库,并创建表,观察从节点是否会同步新建的数据
    docker exec -it mysql1 mysql -uroot -ppassword
    mysql> create database test;
    Query OK, 1 row affected (0.03 sec)
    mysql> use test;
    Database changed
    mysql> create table user(id bigint(20) not null auto_increment primary key, name varchar(20));
    Query OK, 0 rows affected (0.30 sec)
    mysql> insert into user(name) values("zs");
    Query OK, 1 row affected (0.05 sec)
    mysql> insert into user(name) values("lisi");
    Query OK, 1 row affected (0.10 sec)
    mysql> select * from user;
    +----+------+
    | id | name |
    +----+------+
    |  1 | zs   |
    |  2 | lisi |
    +----+------+
    2 rows in set (0.00 sec)#登录到mysql从节点查看
    docker exec -it mysql1 mysql -uroot -ppassword
    可以看到user表及有对应的内容
    #先停止一个dble
    docker stop dble1 #查看另一个dble的wrapper.log和dble.log看下是否都正常
    #wrapper.log日志正常
    INFO   | jvm 1    | 2022/07/01 15:14:32 | Server startup successfully. dble version is [5.7.11-dble-3.21.10.0-97a3b6d73a49cb374020f930c59f82746220b424-20211119064810]. Please see logs in logs/dble.log

    验证高可用结果

    可以看到当停止一个dble库时是可以工作的。

    但是如果停了一个mysql,另一个mysql可以作为主节点,当重启停止的mysql时,mysql并不能自动恢复原来的主从配置。mysql高可用的特性只在dble的商业版本中提供。

配置文件

start.sh

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asia/Shanghai' >/etc/timezone
sh /opt/dble/bin/wait-for-it.sh mysql1:3306 -t 120
sh /opt/dble/bin/wait-for-it.sh mysql2:3306 -t 120
echo "dble start in docker"
sh /opt/dble/bin/dble start
echo "dble start finish"
tailf /opt/dble/logs/wrapper.log

dble-conf文件

bootstrap.cnf

#encoding=UTF-8
-agentlib:jdwp=transport=dt_socket,server=y,address=8088,suspend=n
-server
-XX:+AggressiveOpts
-Dfile.encoding=UTF-8
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1984
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.host=127.0.0.1
-Xmx4G
-Xms1G
-Xss256k
-XX:MaxDirectMemorySize=2G
-XX:MetaspaceSize=100M
# GC Log
-XX:+PrintHeapAtGC
-XX:+PrintGCDateStamps
-Xloggc:./logs/gc_%WRAPPER_TIME_YYYYMMDDHHIISS%_%p.log
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-XX:+PrintTenuringDistribution
# CMS
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=0
-XX:+CMSClassUnloadingEnabled
-XX:LargePageSizeInBytes=128M
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70
#  base config
-DhomePath=.
-DinstanceName=1
# valid for sequenceHandlerType=2 or 3
-DinstanceId=1
-DserverId=xxx1
#-DbindIp=0.0.0.0
#-DserverPort=8066
#-DmanagerPort=9066
#-DmaxCon=1024
#-Dprocessors=4
#-DbackendProcessors=12
#-DprocessorExecutor=4
#-DbackendProcessorExecutor=12
#-DcomplexExecutor=8
#-DwriteToBackendExecutor=4-DfakeMySQLVersion=5.7.11
#-DtraceEndPoint=http://10.186.60.96:14268/api/traces# serverBacklog size,default 2048
-DserverBacklog=2048#-DusePerformanceMode=0
# if need out HA
-DuseOuterHa=true# connection
#-Dcharset=utf8mb4
-DmaxPacketSize=167772160
-DtxIsolation=2
#-Dautocommit=1
#-DidleTimeout=60000# option
#-DuseCompression=1
#-DcapClientFoundRows=false
-DusingAIO=0-DuseThreadUsageStat=1
#  query time cost statistics
#-DuseCostTimeStat=0
#-DmaxCostStatSize=100
#-DcostSamplePercent=1# consistency
#  check the consistency of table structure between nodes,default not
-DcheckTableConsistency=0
#  check period, he default period is 60000 milliseconds
-DcheckTableConsistencyPeriod=60000#  processor check conn
-DprocessorCheckPeriod=1000
-DsqlExecuteTimeout=3000#-DbackSocket unit:bytes
#-DbackSocketSoRcvbuf=4194304
#-DbackSocketSoSndbuf=1048576
#-DbackSocketNoDelay=1#  frontSocket
#-DfrontSocketSoRcvbuf=1048576
#-DfrontSocketSoSndbuf=4194304
#-DfrontSocketNoDelay=1#  query memory used for per session,unit is M
-DotherMemSize=4
-DorderMemSize=4
-DjoinMemSize=4#  off Heap unit:bytes
-DbufferPoolChunkSize=32767
-DbufferPoolPageNumber=512
-DbufferPoolPageSize=2097152
#-DmappedFileSize=2097152#  sql statistics
#  1 means use SQL statistics, 0 means not
-DuseSqlStat=1
#-DbufferUsagePercent=80
-DclearBigSQLResultSetMapMs=600000
#-DsqlRecordCount=10
#-DmaxResultSet=524288#  transaction log
#  1 enable record the transaction log, 0 disable ,the unit of transactionRotateSize is M
-DrecordTxn=0
#-DtransactionLogBaseDir=/txlogs
#-DtransactionLogBaseName=server-tx
#-DtransactionRotateSize=16
#  XA transaction
#  use XA transaction ,if the mysql service crash,the unfinished XA commit/rollback will retry for several times , it is the check period for ,default is 1000 milliseconds
-DxaSessionCheckPeriod=1000
#  use XA transaction ,the finished XA log will removed. the default period is 1000 milliseconds
-DxaLogCleanPeriod=1000
#  XA Recovery Log path
# -DxaRecoveryLogBaseDir=/xalogs/
#  XA Recovery Log name
#-DxaRecoveryLogBaseName=xalog
#  XA Retry count, retry times in backend, 0 means always retry until success
#-DxaRetryCount=0#-DviewPersistenceConfBaseDir=/viewPath
#-DviewPersistenceConfBaseName=viewJson#  for join tmp results
#-DmergeQueueSize=1024
#-DorderByQueueSize=1024
#-DjoinQueueSize=1024#  true is use JoinStrategy, default false
#-DuseJoinStrategy=true
-DnestLoopConnSize=4
-DnestLoopRowsSize=2000#  if enable the slow query log
-DenableSlowLog=1
#  the slow query log location
#-DslowLogBaseDir=./slowlogs
#-DslowLogBaseName=slow-query
#  the max period for flushing the slow query log from memory to disk  after last time , unit is second
-DflushSlowLogPeriod=1
#  the max records for flushing the slow query log from memory to disk after last time
-DflushSlowLogSize=1000
#  the threshold for judging if the query is slow , unit is millisecond
-DsqlSlowTime=100#  used for load data,maxCharsPerColumn means max chars length for per column when load data
#-DmaxCharsPerColumn=65535
#  used for load data, because dble need save to disk if loading file contains large size
#-DmaxRowSizeToFile=10000#-DenableFlowControl=false
#-DflowControlHighLevel=4194304
#-DflowControlLowLevel=262144

cluster.cnf

#
# Copyright (C) 2016-2022 ActionTech.
# License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher.
#clusterEnable=true
# cluster ucore/zk
clusterMode=zk
# zk:  clusterIP=10.186.19.aa:2281,10.186.60.bb:2281
clusterIP=clusterIP=zoo1:2181,zoo2:2181,zoo3:2181
# zk not need cluster.port
clusterPort=5700
rootPath=/dble
#cluster namespace, please use the same one in one cluster
clusterId=cluster-1
# if HA need sync by cluster, only useful when useOuterHa=true
needSyncHa=false
# unit is millisecond
showBinlogStatusTimeout=60000
sequenceHandlerType=2
# valid for sequenceHandlerType=2 or 3
#sequenceStartTime=2010-11-04 09:42:54
# valid for sequenceHandlerType=3 and clusterMode is zk, default true
#sequenceInstanceByZk=true

db.xml

<?xml version="1.0"?>
<!DOCTYPE dble:db SYSTEM "db.dtd">
<dble:db xmlns:dble="http://dble.cloud/" version="4.0"><dbGroup name="host_1" rwSplitMode="0" delayThreshold="100"><heartbeat >select 1</heartbeat><dbInstance name="mysql1" url="mysql1:3306" user="root" password="password" maxCon="200" minCon="50" primary="true" /><dbInstance name="mysql2" url="mysql1:3307" user="root" password="password" maxCon="200" minCon="50" primary="false" /></dbGroup>
</dble:db>

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?><Configuration status="WARN" monitorInterval="30"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d [%-5p][%t] %m %throwable{full} (%C:%F:%L) %n"/></Console><RollingRandomAccessFile name="RollingFile" fileName="${sys:homePath}/logs/dble.log"filePattern="${sys:homePath}/logs/$${date:yyyy-MM}/dble-%d{MM-dd}-%i.log.gz"><PatternLayout><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%t] (%l) - %m%n</Pattern></PatternLayout><Policies><OnStartupTriggeringPolicy/><SizeBasedTriggeringPolicy size="250 MB"/><TimeBasedTriggeringPolicy/></Policies><DefaultRolloverStrategy max="100"><Delete basePath="logs" maxDepth="2"><IfFileName glob="*/dble-*.log.gz"><IfLastModified age="30d"><IfAny><IfAccumulatedFileSize exceeds="1 GB"/><IfAccumulatedFileCount exceeds="10"/></IfAny></IfLastModified></IfFileName></Delete></DefaultRolloverStrategy></RollingRandomAccessFile><!--  independent log file for new ha interface, for use useOuterHa only<RollingFile name="ha_log" fileName="logs/ha.log"filePattern="logs/$${date:yyyy-MM}/ha-%d{MM-dd}-%i.log.gz"><PatternLayout><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%t] (%l) - %m%n</Pattern></PatternLayout><Policies><OnStartupTriggeringPolicy/><SizeBasedTriggeringPolicy size="250 MB"/><TimeBasedTriggeringPolicy/></Policies><DefaultRolloverStrategy max="10"/></RollingFile>--><!--        <RollingFile name="DumpFileLog" fileName="logs/dump.log"--><!--                     filePattern="logs/$${date:yyyy-MM}/dump-%d{MM-dd}-%i.log.gz">--><!--            <PatternLayout>--><!--                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%t] (%l) - %m%n</Pattern>--><!--            </PatternLayout>--><!--            <Policies>--><!--                <OnStartupTriggeringPolicy/>--><!--                <SizeBasedTriggeringPolicy size="250 MB"/>--><!--                <TimeBasedTriggeringPolicy/>--><!--            </Policies>--><!--            <DefaultRolloverStrategy max="10"/>--><!--        </RollingFile>--><!--independent log file for ddl trace<RollingFile name="DDL_TRACE" fileName="logs/ddl.log"filePattern="logs/$${date:yyyy-MM}/ddl-%d{MM-dd}-%i.log.gz"><PatternLayout><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%t] (%l) - %m%n</Pattern></PatternLayout><Policies><OnStartupTriggeringPolicy/><SizeBasedTriggeringPolicy size="250 MB"/><TimeBasedTriggeringPolicy/></Policies><DefaultRolloverStrategy max="10"/></RollingFile>--></Appenders><Loggers><!--  independent log file for new ha interface, for use useOuterHa only<Logger name="ha_log" additivity="false" includeLocation="false" ><AppenderRef ref="ha_log" /><AppenderRef ref="RollingFile"/></Logger>--><!--independent log file for ddl trace<Logger name="DDL_TRACE" additivity="false" includeLocation="false"><AppenderRef ref="DDL_TRACE"/><AppenderRef ref="Console"/><AppenderRef ref="RollingFile"/></Logger> --><!--        <Logger name="dumpFileLog" additivity="false" includeLocation="false" >--><!--            <AppenderRef ref="DumpFileLog" />--><!--            <AppenderRef ref="RollingFile"/>--><!--        </Logger>--><asyncRoot level="info" includeLocation="true"><!--<AppenderRef ref="Console" />--><AppenderRef ref="RollingFile"/></asyncRoot></Loggers>
</Configuration>

user.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dble:user SYSTEM "user.dtd">
<dble:user xmlns:dble="http://dble.cloud/" version="4.0"><managerUser name="admin" password="admin"/><!-- <shardingUser name="test" password="123456" schemas="testdb" readOnly="false"  maxCon="20"/> --><rwSplitUser name="root" password="password" dbGroup="host_1" maxCon="64"/>
</dble:user>

Wrapper.conf

#********************************************************************
# Wrapper Properties
#********************************************************************
# Java Application
wrapper.java.command=java
wrapper.working.dir=..# Java Main class.  This class must implement the WrapperListener interface
#  or guarantee that the WrapperManager class is initialized.  Helper
#  classes are provided to do this for you.  See the Integration section
#  of the documentation for details.
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
set.default.REPO_DIR=lib
set.APP_BASE=.# Java Classpath (include wrapper.jar)  Add class path elements as
#  needed starting from 1
wrapper.java.classpath.1=lib/wrapper.jar
wrapper.java.classpath.2=conf
wrapper.java.classpath.3=%REPO_DIR%/*
wrapper.java.classpath.4=algorithm/*# Java Library Path (location of Wrapper.DLL or libwrapper.so)
wrapper.java.library.path.1=lib# Java Additional Parameters
#wrapper.java.additional.1=# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=3# Maximum Java Heap Size (in MB)
#wrapper.java.maxmemory=64# Application parameters.  Add parameters as needed starting from 1
wrapper.app.parameter.1=com.actiontech.dble.DbleStartup
wrapper.app.parameter.2=start#********************************************************************
# Wrapper Logging Properties
#********************************************************************
# Format of output for the console.  (See docs for formats)
wrapper.console.format=PM# Log Level for console output.  (See docs for log levels)
wrapper.console.loglevel=INFO# Log file to use for wrapper output logging.
wrapper.logfile=logs/wrapper.log# Format of output for the log file.  (See docs for formats)
wrapper.logfile.format=LPTM# Log Level for log file output.  (See docs for log levels)
wrapper.logfile.loglevel=INFO# Maximum size that the log file will be allowed to grow to before
#  the log is rolled. Size is specified in bytes.  The default value
#  of 0, disables log rolling.  May abbreviate with the 'k' (kb) or
#  'm' (mb) suffix.  For example: 10m = 10 megabytes.
wrapper.logfile.maxsize=0# Maximum number of rolled log files which will be allowed before old
#  files are deleted.  The default value of 0 implies no limit.
wrapper.logfile.maxfiles=0# Log Level for sys/event log output.  (See docs for log levels)
wrapper.syslog.loglevel=NONE#********************************************************************
# Wrapper Windows Properties
#********************************************************************
# Title to use when running as a console
wrapper.console.title=dble-server#********************************************************************
# Wrapper Windows NT/2000/XP Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
#  using this configuration file has been installed as a service.
#  Please uninstall the service before modifying this section.  The
#  service can then be reinstalled.# Name of the service
wrapper.ntservice.name=dble# Display name of the service
wrapper.ntservice.displayname=dble-server# Description of the service
wrapper.ntservice.description=The project of dble-server# Service dependencies.  Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=# Mode in which the service is installed.  AUTO_START or DEMAND_START
wrapper.ntservice.starttype=AUTO_START# Allow the service to interact with the desktop.
wrapper.ntservice.interactive=falseconfiguration.directory.in.classpath.last=algorithm/*
wrapper.java.additional_file=conf/bootstrap.cnf
wrapper.ping.timeout=120
configuration.directory.in.classpath.first=conf
wrapper.pidfile=$BASEDIR

mysql-conf

my.cnf

[mysqld]
# 该字段控制时间字段使用 CURRENT_TIMESTAMP 是否可以工作
explicit_defaults_for_timestamp=0
# 最大连接数
max_connections = 4001
# 表名存储为给定的大小和比较:
# 0-表名存储为给定的大小和比较是区分大小写的
# 1-在磁盘是小写的,但是比较的时候是不区分大小写
# 2-表名存储为给定的大小写但是比较的时候是小写的
lower_case_table_names=1
# 修改时区
default-time-zone = '+08:00'
#禁用DNS反向解析配
skip-name-resolve
#skip-host-cache
#慢日志时间设置/ 秒级
long_query_time=0.2
#开通慢sql
slow_query_log=1
#慢sql日志文件
slow_query_log_file=/var/lib/mysql/mysql-slow.log #mysql的同步的数据中是包含server-id的,
#用于标识该语句最初是从哪个server写入的
server-id=1
log-bin=/var/lib/mysql/mysql-bin
symbolic-links=0
binlog_format=ROW
innodb_large_prefix=on
innodb_file_format=BARRACUDAinnodb_buffer_pool_size=12288M
innodb_buffer_pool_instances=8innodb_write_io_threads=4
innodb_read_io_threads=4

zoo-conf

zoo.cfg

dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=zoo1:2888:3888;2181
server.2=zoo2:2888:3888;2181
server.3=zoo3:2888:3888;2181

zoo.cfg.dynamic.next

server.1=zoo1:2888:3888:participant;0.0.0.0:2181
server.2=zoo2:2888:3888:participant;0.0.0.0:2181
server.3=zoo3:2888:3888:participant;0.0.0.0:2181
version=100000000

docker-compose.yml

docker-compose.yml

version : '3.8'
services:zoo1:container_name: zoo1image: zookeeper:3.5.7restart: alwayshostname: zoo1volumes:- ./zoo1/conf:/conf- ./zoo1/data:/data- ./zoo1/datalog:/datalogports:- 2181:2181environment:ZOO_MY_ID: 1ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181zoo2:container_name: zoo2image: zookeeper:3.5.7restart: alwayshostname: zoo2volumes:- ./zoo2/conf:/conf- ./zoo2/data:/data- ./zoo2/datalog:/datalogports:- 2182:2181environment:ZOO_MY_ID: 2ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181zoo3:image: zookeeper:3.5.7container_name: zoo3restart: alwayshostname: zoo3volumes:- ./zoo3/conf:/conf- ./zoo3/data:/data- ./zoo3/datalog:/datalogports:- 2183:2181environment:ZOO_MY_ID: 3ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181mysql1:image: mysql:5.7container_name: mysql1restart: alwayshostname: mysql1volumes:- ./mysql1/conf:/etc/mysql/conf.d- ./mysql1/logs:/logs- ./mysql1/data:/var/lib/mysqlports:- 3307:3306environment:MYSQL_ROOT_PASSWORD: passwordcommand: ['mysqld','--innodb-buffer-pool-size=80M','--character-set-server=utf8mb4','--collation-server=utf8mb4_unicode_ci','--default-time-zone=+8:00','--lower-case-table-names=1','--max_connections=1024']mysql2:image: mysql:5.7container_name: mysql2restart: alwayshostname: mysql2volumes:- ./mysql2/conf:/etc/mysql/conf.d- ./mysql2/logs:/logs- ./mysql2/data:/var/lib/mysqlports:- 3308:3306environment:MYSQL_ROOT_PASSWORD: passwordcommand: ['mysqld','--innodb-buffer-pool-size=80M','--character-set-server=utf8mb4','--collation-server=utf8mb4_unicode_ci','--default-time-zone=+8:00','--lower-case-table-names=1','--max_connections=1024']dble1:image: actiontech/dble:latesthostname: dble1container_name: dble1privileged: truestdin_open: truetty: trueports:- 8066:8066volumes:- ./start.sh:/opt/dble/bin/start.sh- ./dble1/conf/user.xml:/opt/dble/conf/user.xml:rw- ./dble1/conf/db.xml:/opt/dble/conf/db.xml:rw- ./dble1/conf/cluster.cnf:/opt/dble/conf/cluster.cnf:rw - ./dble1/conf/bootstrap.cnf:/opt/dble/conf/bootstrap.cnf:rw- ./dble1/logs/:/opt/dble/logs/:rwcommand: ["sh","/opt/dble/bin/start.sh"]depends_on:- mysql1- mysql2- zk1- zk2- zk3dble2:image: actiontech/dble:latestprivileged: truestdin_open: truetty: truecontainer_name: dble2hostname: dble2ports:- 8067:8066volumes:- ./start.sh:/opt/dble/bin/start.sh- ./dble2/conf/user.xml:/opt/dble/conf/user.xml:rw- ./dble2/conf/db.xml:/opt/dble/conf/db.xml:rw- ./dble2/conf/cluster.cnf:/opt/dble/conf/cluster.cnf:rw- ./dble2/conf/bootstrap.cnf:/opt/dble/conf/bootstrap.cnf:rw- ./dble2/logs/:/opt/dble/logs/:rwcommand: ["sh","/opt/dble/bin/start.sh"]depends_on:- mysql1- mysql2- zoo1- zoo2- zoo3

dble安装zk及配置mysql主从模式,在已有mysql存在数据升级mysql配置相关推荐

  1. Mysql主从模式部署过程

    MySQL主从模式可以从一个MySQL数据库服务器主节点复制到一个或多个从节点.本文使用 半同步复制模式 . mysql主从复制用途: 实时灾备,用于故障切换(高可用) 读写分离,提供查询服务(读扩展 ...

  2. mysql主从架构搭建_技术 | 手把手教你搭建MySQL主从架构

    1 什么是MySQL的复制 MySQL的主从复制可以实现将数据从一台数据库服务器(master)复制到一台或多台数据库服务器(slave)上,进而可以保证数据有多份冗余. 默认情况下,属于异步复制,所 ...

  3. MySql 主从模式原理及操作步骤

    mysql是现在普遍使用的数据库,但是如果宕机了必然会造成数据丢失.为了保证mysql数据库的可靠性.就要会一些提高可靠性的技术. 主从复制原理如下. slave(从服务器) master(主服务器) ...

  4. mysql 5.7.17 64位_Windows(x86,64bit)升级MySQL 5.7.17免安装版的详细教程

    MySQL需要升级到5.5.3以上版本才支持Laravel 5.4默认的utf8mb64字符编码.因此就把MySQL升级了一下,期间还是遇到些小问题,记录一下以供参考. 升级准备 备份之前MySql目 ...

  5. 数据库周刊62丨央企2021年数据库成交公告,国产占90%;流数据库HStreamDB开源;MySQL主从双写导致数据丢失;Oracle 19c升级最佳实践;PG日常工作分享;MySQL MGR运维指

    热门资讯 [1.中央国家机关2021年数据库成交公告:国产数据库份额占90% [摘要]据央采网3月19日发布的<中央国家机关2021年数据库软件协议供货采购项目成交公告>显示事务型数据库管 ...

  6. php面试题 mysql 主从_必看!PHP常见面试题——MySQL篇

    21.简要说一下数据库范式? 第一范式(1NF):强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项. 第二范式(2NF):要求实体的属性完全依赖于主关键字.所谓完全依赖是指不能存在仅依赖 ...

  7. 把EXCEL表格导入到MYSQL中_将EXCEL表格中的数据导入mysql数据库表中(两种方法)...

    今天项目上遇到需要将excel中的数据导入到数据库的classify表中,于是乎拼命上网查阅方法,发现以下两种方法比较可行: 在此之前先说说按照网上的说法我没有试验成功的方法,将excel文件xls保 ...

  8. java mysql 文本导入数据语句_Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQL...

    Mysql load data的使用 数据库中,最常见的写入数据方式是通过SQL INSERT来写入,另外就是通过备份文件恢复数据库,这种备份文件在MySQL中是SQL脚本,实际上执行的还是在批量IN ...

  9. linux搭建mysql主从模式_Linux下搭建MySQL的主从复制(一)

    一从一主模式的搭建 1.主从复制原理 1. 从服务器使用IO Thread向主服务器发送请求   2. 主服务器接受到请求之后,将二进制日志文件通过dump Thread线程响应给从服务器的IO Th ...

  10. Docker部署mysql主从模式

    文章目录 1. 获取mysql镜像 2. 拉取mysql镜像 3. 启动mysql容器 4. 使用Navicat连接mysql 5. 更改my.cnf配置 7.在master数据库(主库)中创建同步用 ...

最新文章

  1. java+自定义异常类+输入若干成绩 为负数时输出抛出异常_java+自定义异常类+输入若干成绩 为...
  2. 小心!智能合约再爆高危漏洞,两大加密货币直接变废纸!
  3. caffe windows 学习第一步:编译和安装(vs2012+win 64)
  4. declspec(dllexport)与_declspec(dllimport) 异同
  5. Java 实现基于 UDP 的简单 socket 通信
  6. C++ vector用法
  7. 52 SD配置-定价配置-定义定价程序确定
  8. [转载] Linux进程基础
  9. Unity2D:简单人物纸娃娃换装实现(一) 服装的变换
  10. MYSQL查询语句大全集锦
  11. 迅雷下gho文件变成php,GHO格式文件转换成WIM格式文件
  12. 计算机毕业设计ssm毕业论文管理系统b909r系统+程序+源码+lw+远程部署
  13. 【技术美术图形部分】纹理基础2.0-凹凸映射
  14. 中介效应调节效应分析对比及操作详解
  15. 纯前端滑块拼图验证组件(多端兼容)
  16. 联想z5可以刷鸿蒙系统吗,联想z5引用adb刷Project Treble通刷第三方rom教程(亲测成功)...
  17. EMV L2 - 应用选择
  18. Linux系统下怎么查询自己的ip和port
  19. 万圣节html代码大全,基于Jquery实现万圣节快乐特效
  20. S9-魔方方法与模块

热门文章

  1. Black Hat 2017:不容错过的七大主题演讲
  2. 计算机 26个英文字母代表数字,excel 输入26个英文字母的三种方法
  3. 函数声明应该写在什么位置?main函数里面还是前面?(都可以,只要在调用语句的前面即可)
  4. Google Earth Engine(GEE)——设置经纬格网(日本东京)
  5. 详解分级基金(杠杆基金)【精华】 【转】
  6. 金蝶EAS-BOS二开详细过程
  7. ysoserial exploit/JRMPListener原理剖析
  8. 3C认证与电源PFC
  9. 关注幼儿教育,找到家园沟通“最大公约数”
  10. 保姆级教程!Windows右下角扬声器有红叉,点击声音设置输出显示“未安装任何音频输出设备”?