文章目录

  • 一、安装Percona数据库
    • 1. 离线安装Percona
    • 2. 在线安装Percona
    • 3. 开放防火墙端口
    • 4. 修改MySQL配置文件
    • 5. 禁止开机启动MySQL
    • 6. 初始化MySQL数据库
  • 二、创建PXC集群
    • 1. 删除MariaDB程序包
    • 2. 开放防火墙端口
    • 3. 关闭SELINUX
    • 4. 离线安装PXC
    • 5. 创建PXC集群
    • 6. PXC节点启动与关闭
  • 三、安装MyCat
    • 1. JDK安装与配置
    • 2. 创建数据表
    • 3. MyCat安装与配置
    • 4. 配置父子表
    • 5. 创建双机热备的MyCat集群
  • 四、Sysbench基准测试
    • 1. 安装Sysbench
    • 2. 执行测试
  • 五、tpcc-mysql 压力测试
    • 1. 准备工作
    • 2. 安装tpcc-mysql
  • 六、导入数据
    • 1. 生成1000万条数据
    • 2. 执行文件切分
    • 3. 准备数据库
    • 4. 执行Java程序,多线程导入数据
  • 七、大数据归档
    • 1. 安装TokuDB
    • 2. 配置Replication集群
    • 3. 创建归档表
    • 4. 配置Haproxy+Keepalived双机热备
    • 5. 准备归档数据
    • 6. 执行数据归档

一、安装Percona数据库

1. 离线安装Percona

  • 进入RPM安装文件目录,执行下面的脚本

    yum localinstall *.rpm
    
  • 管理MySQL服务

    systemctl start mysqld
    systemctl stop mysqld
    systemctl restart mysqld
    

2. 在线安装Percona

  • 使用yum命令安装

    yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
    yum  install  Percona-Server-server-57
    
  • 管理MySQL服务

    service mysql start
    service mysql stop
    service mysql restart
    

3. 开放防火墙端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

4. 修改MySQL配置文件

vi /etc/my.cnf
[mysqld]
character_set_server = utf8
bind-address = 0.0.0.0
#跳过DNS解析
skip-name-resolve
service mysql restart

5. 禁止开机启动MySQL

chkconfig mysqld off

6. 初始化MySQL数据库

  • 查看MySQL初始密码

    cat /var/log/mysqld.log | grep "A temporary password"
    
  • 修改MySQL密码

    mysql_secure_installation
    
  • 创建远程管理员账户

    mysql -u root -p
    
    CREATE USER 'admin'@'%' IDENTIFIED BY 'Abc_123456';
    GRANT all privileges ON *.* TO 'admin'@'%';
    FLUSH PRIVILEGES;
    

二、创建PXC集群

1. 删除MariaDB程序包

yum -y remove mari*

2. 开放防火墙端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=4444/tcp --permanent
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --zone=public --add-port=4568/tcp --permanent

3. 关闭SELINUX

vi /etc/selinux/config

把SELINUX属性值设置成disabled

reboot

4. 离线安装PXC

  • 进入RPM文件目录,执行安装命令

    yum localinstall *.rpm
    
  • 参考第一章内容,修改MySQL配置文件、创建账户等操作

5. 创建PXC集群

  • 停止MySQL服务

  • 修改每个PXC节点的/etc/my.cnf文件(在不同节点上,注意调整文件内容)

    server-id=1  #PXC集群中MySQL实例的唯一ID,不能重复,必须是数字
    wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
    wsrep_cluster_name=pxc-cluster  #PXC集群的名称
    wsrep_cluster_address=gcomm://192.168.99.151,192.168.99.159,192.168.99.215
    wsrep_node_name=pxc1  #当前节点的名称
    wsrep_node_address=192.168.99.151  #当前节点的IP
    wsrep_sst_method=xtrabackup-v2  #同步方法(mysqldump、rsync、xtrabackup)
    wsrep_sst_auth= admin:Abc_123456  #同步使用的帐户
    pxc_strict_mode=ENFORCING  #同步严厉模式
    binlog_format=ROW  #基于ROW复制(安全可靠)
    default_storage_engine=InnoDB  #默认引擎
    innodb_autoinc_lock_mode=2  #主键自增长不锁表
    
  • 主节点的管理命令(第一个启动的PXC节点)

    systemctl start mysql@bootstrap.service
    systemctl stop mysql@bootstrap.service
    systemctl restart mysql@bootstrap.service
    
  • 非主节点的管理命令(非第一个启动的PXC节点)

    service start mysql
    service stop mysql
    service restart mysql
    
  • 查看PXC集群状态信息

    show status like 'wsrep_cluster%' ;
    
  • 按照上述配置方法,创建两组PXC集群

6. PXC节点启动与关闭

  • 如果最后关闭的PXC节点是安全退出的,那么下次启动要最先启动这个节点,而且要以主节点启动
  • 如果最后关闭的PXC节点不是安全退出的,那么要先修改/var/lib/mysql/grastate.dat 文件,把其中的safe_to_bootstrap属性值设置为1,再安装主节点启动

三、安装MyCat

1. JDK安装与配置

  • 安装JDK

    #搜索JDK版本
    yum search jdk
    #安装JDK1.8开发版
    yum install java-1.8.0-openjdk-devel.x86_64
    
  • 配置环境变量

    #查看JDK安装路径
    ls -lrt /etc/alternatives/java
    vi /etc/profile
    #在文件结尾加上JDK路径,例如export  JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/
    source  /etc/profile
    

2. 创建数据表

  • 在两组PXC集群中分别创建t_user数据表

    CREATE TABLE t_user(id INT UNSIGNED PRIMARY KEY,username VARCHAR(200) NOT NULL,password VARCHAR(2000) NOT NULL,tel CHAR(11) NOT NULL,locked TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,INDEX idx_username(username) USING BTREE,UNIQUE INDEX unq_username(username) USING BTREE
    );
    

3. MyCat安装与配置

  1. 下载MyCat

    http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz

  2. 上传MyCat压缩包到虚拟机

  3. 安装unzip程序包,解压缩MyCat

    yum install unzip
    unzip MyCAT压缩包名称
    
  4. 开放防火墙8066和9066端口,关闭SELINUX

  5. 修改MyCat的bin目录中所有.sh文件的权限

    chmod -R 777 ./*.sh
    
  6. MyCat启动与关闭

    #cd MyCat的bin目录
    ./startup_nowrap.sh #启动MyCat
    ps -aux #查看系统进程
    kill -9 MyCat进程编号
    
  7. 修改server.xml文件,设置MyCat帐户和虚拟逻辑库

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mycat:server SYSTEM "server.dtd">
    <mycat:server xmlns:mycat="http://io.mycat/"><system><property name="nonePasswordLogin">0</property><property name="useHandshakeV10">1</property><property name="useSqlStat">0</property><property name="useGlobleTableCheck">0</property><property name="sequnceHandlerType">2</property><property name="subqueryRelationshipCheck">false</property><property name="processorBufferPoolType">0</property><property name="handleDistributedTransactions">0</property><property name="useOffHeapForMerge">1</property><property name="memoryPageSize">64k</property><property name="spillsFileBufferSize">1k</property><property name="useStreamOutput">0</property><property name="systemReserveMemorySize">384m</property><property name="useZKSwitch">false</property></system><!--这里是设置的admin用户和虚拟逻辑库--><user name="admin" defaultAccount="true"><property name="password">Abc_123456</property><property name="schemas">test</property></user>
    </mycat:server>
    
  8. 修改schema.xml文件,设置数据库连接和虚拟数据表

    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/"><!--配置数据表--><schema name="test" checkSQLschema="false" sqlMaxLimit="100"><table name="t_user" dataNode="dn1,dn2" rule="mod-long" /></schema><!--配置分片关系--><dataNode name="dn1" dataHost="cluster1" database="test" /><dataNode name="dn2" dataHost="cluster2" database="test" /><!--配置连接信息--><dataHost name="cluster1" maxCon="1000" minCon="10" balance="2" writeType="1" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="W1" url="192.168.99.151:3306" user="admin" password="Abc_123456"><readHost host="W1R1" url="192.168.99.159:3306" user="admin" password="Abc_123456" /><readHost host="W1R2" url="192.168.99.215:3306" user="admin" password="Abc_123456" /></writeHost><writeHost host="W2" url="192.168.99.159:3306" user="admin" password="Abc_123456"><readHost host="W2R1" url="192.168.99.151:3306" user="admin" password="Abc_123456" /><readHost host="W2R2" url="192.168.99.215:3306" user="admin" password="Abc_123456" /></writeHost></dataHost><dataHost name="cluster2" maxCon="1000" minCon="10" balance="2" writeType="1" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="W1" url="192.168.99.121:3306" user="admin"password="Abc_123456"><readHost host="W1R1" url="192.168.99.122:3306" user="admin" password="Abc_123456" /><readHost host="W1R2" url="192.168.99.123:3306" user="admin" password="Abc_123456" /></writeHost><writeHost host="W2" url="192.168.99.122:3306" user="admin"password="Abc_123456"><readHost host="W2R1" url="192.168.99.121:3306" user="admin" password="Abc_123456" /><readHost host="W2R2" url="192.168.99.123:3306" user="admin" password="Abc_123456" /></writeHost></dataHost>
    </mycat:schema>
    
  9. 修改rule.xml文件,把mod-long的count值修改成2

    <function name="mod-long" class="io.mycat.route.function.PartitionByMod"><property name="count">2</property>
    </function>
    
  10. 重启MyCat

  11. 向t_user表写入数据,感受数据的切分

    USE test;
    #第一条记录被切分到第二个分片
    INSERT INTO t_user(id,username,password,tel,locked) VALUES(1,"A",HEX(AES_ENCRYPT('123456','HelloWorld')));
    #第二条记录被切分到第一个分片
    INSERT INTO t_user(id,username,password,tel,locked) VALUES(2,"B",HEX(AES_ENCRYPT('123456','HelloWorld')));
    

4. 配置父子表

  1. 在conf目录下创建customer-hash-int文件,内容如下:

    101=0
    102=0
    103=0
    104=1
    105=1
    106=1
    
  2. 在rule.xml文件中加入自定义和

    <function name="customer-hash-int"class="io.mycat.route.function.PartitionByFileMap"><property name="mapFile">customer-hash-int.txt</property>
    </function>
    
    <tableRule name="sharding-customer"><rule><columns>sharding_id</columns><algorithm>customer-hash-int</algorithm></rule>
    </tableRule>
    
  3. 修改schema.xml文件,添加父子表定义

    <table name="t_customer" dataNode="dn1,dn2" rule="sharding-customer"><childTable name="t_orders" primaryKey="ID" joinKey="customer_id"   parentKey="id"/>
    </table>
    
  4. 在MyCat上执行如下SQL:

    USE test;
    CREATE TABLE t_customer(id INT UNSIGNED PRIMARY KEY,username VARCHAR(200) NOT NULL,sharding_id INT NOT NULL
    );
    CREATE TABLE t_orders(id INT UNSIGNED PRIMARY KEY,customer_id INT NOT NULL,datetime TIMESTAMP DEFAULT CURRENT_TIMSTAMP
    );
    
  5. 向t_customer表和t_orders表写入数据,查看字表数据跟随父表切分到同一个分片

5. 创建双机热备的MyCat集群

  1. 用两个虚拟机实例,各自部署MyCat

  2. 用一个虚拟机实例部署Haproxy

    • 安装Haproxy

      yum install -y haproxy
      
    • 编辑配置文件

      vi /etc/haproxy/haproxy.cfg
      
      globallog         127.0.0.1 local2chroot      /var/lib/haproxypidfile     /var/run/haproxy.pidmaxconn     4000user        haproxygroup       haproxydaemon# turn on stats unix socketstats socket /var/lib/haproxy/statsdefaultsmode                    httplog                     globaloption                  httplogoption                  dontlognulloption http-server-closeoption forwardfor       except 127.0.0.0/8option                  redispatchretries                 3timeout http-request    10stimeout queue           1mtimeout connect         10stimeout client          1mtimeout server          1mtimeout http-keep-alive 10stimeout check           10smaxconn                 3000listen   admin_stats  bind    0.0.0.0:4001mode  httpstats uri       /dbsstats realm  Global\ statisticsstats auth    admin:abc123456
      listen   proxy-mysqlbind    0.0.0.0:3306  mode  tcp balance  roundrobinoption  tcplog       #日志格式server   mycat_1  192.168.99.131:3306  check  port  8066  maxconn  2000  server   mycat_2  192.168.99.132:3306  check  port  8066  maxconn  2000  option  tcpka        #使用keepalive检测死链
      
    • 启动Haproxy

      service haproxy start
      
    • 访问Haproxy监控画面

      http://192.168.99.131:4001/dbs

  3. 用另外一个虚拟机同样按照上述操作安装Haproxy

  4. 在某个Haproxy虚拟机实例上部署Keepalived

    • 开启防火墙的VRRP协议

      #开启VRRP
      firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --protocol  vrrp -j ACCEPT
      #应用设置
      firewall-cmd --reload
      
    • 安装Keepalived

      yum install -y keepalived
      
    • 编辑配置文件

      vim /etc/keepalived/keepalived.conf
      
      vrrp_instance  VI_1 {state  MASTERinterface  ens33virtual_router_id  51priority  100advert_int  1authentication {auth_type  PASSauth_pass  123456}virtual_ipaddress {192.168.99.133}
      }
      
    • 启动Keepalived

      service keepalived start
      
    • ping 192.168.99.133

  5. 在另外一个Haproxy虚拟机上,按照上述方法部署Keepalived

  6. 使用MySQL客户端连接192.168.99.133,执行增删改查数据

四、Sysbench基准测试

1. 安装Sysbench

  • 在线安装

    curl -s https://packagecloud.io/install/
    repositories/akopytov/sysbench/script.rpm.sh | sudo bash
    
    yum -y install sysbench
    
  • 本地安装

    • 下载压缩文件

      https://codeload.github.com/akopytov/sysbench/zip/1.0

    • 安装依赖包

      yum install -y automake libtool
      yum install -y mysql-devel
      
    • 执行安装

      #cd sysbench
      ./autogen.sh
      ./configure
      make
      make install
      sysbench --version
      

2. 执行测试

  • 准备测试库

    sysbench  /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.99.131 --mysql-port=3306 --mysql-user=admin --mysql-password=Abc_123456 --oltp-tables-count=10 --oltp-table-size=100000 prepare
    
  • 执行测试

    sysbench  /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.99.131 --mysql-port=3306 --mysql-user=admin --mysql-password=Abc_123456 --oltp-test-mode=complex --threads=10 --time=300 --report-interval=10 run >> /home/mysysbench.log
  • 清理数据

    sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.99.131 --mysql-port=3306 --mysql-user=admin --mysql-password=Abc_123456 --oltp-tables-count=10 cleanup
    

五、tpcc-mysql 压力测试

1. 准备工作

  • 修改my.cnf配置文件

    vi /etc/my.cnf
    

    pxc_strict_mode=DISABLED

  • 修改某个Haproxy的配置文件

    server   mysql_1  192.168.99.151:3306  check  port  3306  weight  1  maxconn  2000
    server   mysql_2  192.168.99.159:3306  check  port  3306  weight  1  maxconn  2000
    server   mysql_3  192.168.99.215:3306  check  port  3306  weight  1  maxconn  2000
    
  • 重新启动Haproxy

  • 安装依赖程序包

    yum install -y gcc
    yum install -y mysql-devel
    

2. 安装tpcc-mysql

  • 下载压缩包

    https://codeload.github.com/Percona-Lab/tpcc-mysql/zip/master

  • 执行安装

    #cd tpcc的src目录
    make
    
  • 执行create_table.sqladd_fkey_idx.sql两个文件

  • 执行数据初始化

    ./tpcc_load -h 192.168.99.131 -d tpcc -u admin -p Abc_123456 -w
    
  • 执行压力测试

    ./tpcc_start -h 192.168.99.131 -d tpcc -u admin -p Abc_123456 -w 1 -c 5 -r 300 -l 600 ->tpcc-output-log
    

六、导入数据

1. 生成1000万条数据

import java.io.FileWriter
import java.io.BufferedWriterclass Test {def static void main(String[] args) {var writer=new FileWriter("D:/data.txt")var buff=new BufferedWriter(writer)for(i:1..10000000){buff.write(i+",测试数据\n")}buff.closewriter.close}
}

2. 执行文件切分

  • 上传data.txt文件到linux

  • 执行文件切分

    split -l 1000000 -d data.txt
    

3. 准备数据库

  • 每个PXC分片只开启一个节点

  • 修改PXC节点文件,然后重启PXC服务

    innodb_flush_log_at_trx_commit = 0
    innodb_flush_method = O_DIRECT
    innodb_buffer_pool_size = 200M
    
  • 创建t_test数据表

    CREATE TABLE t_test(id INT UNSIGNED PRIMARY KEY,name VARCHAR(200) NOT NULL
    );
    
  • 配置MyCat

    <table name="t_test" dataNode="dn1,dn2" rule="mod-long" />
    <dataHost name="cluster1" maxCon="1000" minCon="10" balance="0" writeType="1" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="W1" url="192.168.99.151:3306" user="admin" password="Abc_123456"/>
    </dataHost>
    <dataHost name="cluster2" maxCon="1000" minCon="10" balance="0" writeType="1" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="W1" url="192.168.99.121:3306" user="admin" password="Abc_123456"/>
    </dataHost>
    

4. 执行Java程序,多线程导入数据

import org.eclipse.xtend.lib.annotations.Accessors
import java.io.File
import java.sql.DriverManagerclass Task implements Runnable{@AccessorsFile file;override run() {var url="jdbc:mysql://192.168.99.131:8066/test"var username="admin"var password="Abc_123456"var con=DriverManager.getConnection(url,username,password)var sql='''load data local intfile '/home/data/«file.name»' ignore into table t_test character set 'utf8' fields terminated by ',' optionally enclosed by '\"' lines terminated by '\n' (id,name);'''var pst=con.prepareStatement(sql);pst.executecon.closeLoadData.updateNum();}
}
import com.mysql.jdbc.Driver
import java.sql.DriverManager
import java.util.concurrent.LinkedBlockingQueue
import java.util.concurrent.ThreadPoolExecutor
import java.util.concurrent.TimeUnit
import java.io.Fileclass LoadData {var static int num=0;var static int end=0;var static pool=new ThreadPoolExecutor(1,5,60,TimeUnit.SECONDS,new LinkedBlockingQueue(200))def static void main(String[] args) {DriverManager.registerDriver(new Driver)var folder=new File("/home/data")var files=folder.listFilesend=files.length //线程池结束条件files.forEach[one|var task=new Task();task.file=one;pool.execute(task)]}synchronized def static updateNum(){num++;if(num==end){pool.shutdown();println("执行结束")}}
}

七、大数据归档

1. 安装TokuDB

  • 安装jemlloc

    yum install -y jemalloc
    
  • 编辑配置文件

    vi /etc/my.cnf
    
    ……
    [mysqld_safe]
    malloc-lib=/usr/lib64/libjemalloc.so.1
    ……
    
  • 重启MySQL

  • 开启Linux大页内存

    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    
  • 安装TokuDB

    yum install -y Percona-Server-tokudb-57.x86_64
    ps-admin --enable -uroot -p
    service mysql restart
    ps-admin --enable -uroot -p
    
  • 查看安装结果

    show engines ;
    

2. 配置Replication集群

  • 在两个TokuDB数据库上创建用户

    CREATE USER 'backup'@'%' IDENTIFIED BY 'Abc_123456' ;
    
    GRANT super, reload, replication slave ON *.* TO 'backup'@'%' ;
    
    FLUSH  PRIVILEGES ;
    
  • 修改两个TokuDB的配置文件,如下:

    [mysqld]
    server_id = 101
    log_bin = mysql_bin
    relay_log = relay_bin
    ……
    
    [mysqld]
    server_id = 102
    log_bin = mysql_bin
    relay_log = relay_bin
    
  • 重新启动两个TokuDB节点

  • 分别在两个TokuDB上执行下面4句SQL

    #关闭同步服务
    stop slave;
    #设置同步的Master节点
    change master to master_host="192.168.99.155",master_port=3306,master_user="backup",
    master_password="Abc_123456";
    #启动同步服务
    start slave;
    #查看同步状态
    show slave status;
    
    #关闭同步服务
    stop slave;
    #设置同步的Master节点
    change master to master_host="192.168.99.102",master_port=3306,master_user="backup",
    master_password="Abc_123456";
    #启动同步服务
    start slave;
    #查看同步状态
    show slave status;
    

3. 创建归档表

CREATE TABLE t_purchase (id INT UNSIGNED PRIMARY KEY,purchase_price DECIMAL(10,2) NOT NULL,purchase_num INT UNSIGNED NOT NULL,purchase_sum DECIMAL (10,2) NOT NULL,purchase_buyer INT UNSIGNED NOT NULL,purchase_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,company_id INT UNSIGNED NOT NULL,goods_id INT UNSIGNED NOT NULL,KEY idx_company_id(company_id),KEY idx_goods_id(goods_id)
)engine=TokuDB;

4. 配置Haproxy+Keepalived双机热备

  • 在两个节点上安装Haproxy

    yum install -y haproxy
    
  • 修改配置文件

    vi /etc/haproxy/haproxy.cfg
    
    globallog         127.0.0.1 local2chroot      /var/lib/haproxypidfile     /var/run/haproxy.pidmaxconn     4000user        haproxygroup       haproxydaemon# turn on stats unix socketstats socket /var/lib/haproxy/statsdefaultsmode                    httplog                     globaloption                  httplogoption                  dontlognulloption http-server-closeoption forwardfor       except 127.0.0.0/8option                  redispatchretries                 3timeout http-request    10stimeout queue           1mtimeout connect         10stimeout client          1mtimeout server          1mtimeout http-keep-alive 10stimeout check           10smaxconn                 3000listen   admin_stats  bind    0.0.0.0:4001mode  httpstats uri       /dbsstats realm  Global\ statisticsstats auth    admin:abc123456
    listen   proxy-mysqlbind    0.0.0.0:4002  mode  tcp balance  roundrobinoption  tcplog       #日志格式server   backup_1  192.168.99.102:3306  check  port  3306  maxconn  2000  server   backup_2  192.168.99.155:3306  check  port  3306  maxconn  2000  option  tcpka        #使用keepalive检测死链
    
  • 重启Haproxy

  • 开启防火墙的VRRP协议

    firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --protocol vrrp -j ACCEPT
    
    firewall-cmd --reload
    
  • 在两个节点上安装Keepalived

    yum install -y keepalived
    
  • 编辑Keepalived配置文件

    vim /etc/keepalived/keepalived.conf
    
    vrrp_instance  VI_1 {state  MASTERinterface  ens33virtual_router_id  51priority  100advert_int  1authentication {auth_type  PASSauth_pass  123456}virtual_ipaddress {192.168.99.211}
    }
    
  • 重启Keepalived

5. 准备归档数据

  • 在两个PXC分片上创建进货表

    CREATE TABLE t_purchase (id INT UNSIGNED PRIMARY KEY,purchase_price DECIMAL(10,2) NOT NULL,purchase_num INT UNSIGNED NOT NULL,purchase_sum DECIMAL (10,2) NOT NULL,purchase_buyer INT UNSIGNED NOT NULL,purchase_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,company_id INT UNSIGNED NOT NULL,goods_id INT UNSIGNED NOT NULL,KEY idx_company_id(company_id),KEY idx_goods_id(goods_id)
    )
    
  • 配置MyCat的schema.xml文件,并重启MyCat

    <table name="t_purchase" dataNode="dn1,dn2" rule="mod-long" />
    

6. 执行数据归档

  • 安装pt-archiver

    yum install percona-toolkit
    pt-archiver --version
    pt-archiver --help
    
  • 执行数据归档

    pt-archiver --source h=192.168.99.102,P=8066,u=admin,p=Abc_123456,D=test,t=t_purchase --dest h=192.168.99.102,P=3306,u=admin,p=Abc_123456,D=test,t=t_purchase --no-check-charset --where 'purchase_date<"2018-09"' --progress 5000 --bulk-delete --bulk-insert --limit=10000 --statistics
    

MySQL高可用之PXC搭建及使用相关推荐

  1. MYSQL高可用之PXC

    PXC 简介 部署PXC 引导第一个节点初始化集群 将其他节点添加到集群 验证复制 简介 PXC (Percona XtraDB Cluster)是一个开源的MySQL高可用解决方案.它将Percon ...

  2. MySQL——MySQL高可用之PXC

    PXC简介 参考 Percona 官方 https://www.percona.com/ PXC(Percona XtraDB Cluster)是一个开源的MySQL高可用解决方案.它将Percona ...

  3. 带你玩转Mysql高可用方案--PXC

    目录 理论篇 基于Galere协议的高可用方案:pxc PXC介绍 PXC特性 PXC优缺点 PXC原理描述 PXC的架构示意图 数据读写示意图 下面看传统复制流程 异步复制 半同步 超过10秒的阀值 ...

  4. MySQL高可用集群搭建 ----- MHA

    一.何为高可用? 高可用性说白了就是应用可以 持续不间断 的 提供服务的能力! 注: 高可用和负载均衡的概念有些初学者可能会混淆,在这也说说负载均衡: 负载均衡:指后端服务器没有状态,可以任意分配,它 ...

  5. Mysql高可用集群搭建(一)一主两从服务搭建

    目录  显示 1. 话不多说直接先看版本 安装前确认环境 $ rpm -qa | grep mariadb $ rpm -e -v --nodeps mariadb-libs-5.5.68-1.el7 ...

  6. MySQL高可用方案之PXC架构

    如何搭建并使用数据强一致性的MySQL集群? MySQL数据库集群之PXC方案-PXC简介 通常大家熟知的mysql集群采用的是Replication方案,Replication采用的是节点之间异步传 ...

  7. Heartbeat+DRBD+MySQL高可用方案

    1.方案简介 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由DRBD这个工具来保证.默认情况下只有一台mysql在工作,当主mysql服务器出现问题后,系统将自 ...

  8. keepalived + HAProxy + mysql高可用

    文章目录 MySQL 高可用 简介 1. 环境准备 2. 搭建 mysql 双主复制 3. 安装 HAProxy 4. 安装 keepalived 4.1 修改配置文件 4.2 编写脚本 5. 测试 ...

  9. MySQL数据库高可用集群搭建-PXC集群部署

    Percona XtraDB Cluster(下文简称PXC集群)提供了MySQL高可用的一种实现方法.集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上. PXC原理描述: 分布式 ...

最新文章

  1. ASA用ASDM管理时报unable to launch device manager xxx.xxx.xxx.xxx
  2. 看看50万码农怎么评论:为什么程序员工资那么高但很少有人炫富?
  3. C++虚函数实现多态的机制
  4. 怎么在android中定义泛型,android – 如何在GSON TypeToken类中使用自定义泛型?
  5. JVM 学习一:JVM 的构架模型及生命周期
  6. 机器视觉:自动织物检测系统
  7. 穷人和富人在处事方式上的区别
  8. Oozie5.2.1源码编译及安装部署
  9. E-Prime2.0安装避坑指南
  10. 网页测速 php,2020年8月更新 站长必备/测速工具网站推荐
  11. 液压齿轮泵的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  12. [Irving] SQL 2005/SQL 2008 备份数据库并自动删除N天前备份的脚本
  13. 用C#开发的一个通用的地铁换乘查询工具
  14. Excel 里筛选手机号码所属运营商
  15. css鼠标划过时的一些小特效
  16. 如何经营好一家公司?这些管理要点请收下
  17. 【关于NI CAN USB-8473在实际应用中的案例分析】
  18. android+小米文件管理器源码,[MediaStore]小米文件管理器android版源码分析——数据来源...
  19. UDS之浅谈11服务
  20. java实现微博网站设计_基于jsp的微博网站-JavaEE实现微博网站 - java项目源码

热门文章

  1. Relation Classification
  2. OpenFire源码学习之四:openfire的启动流程
  3. ThinkPHP6开源全新开发云梦卡社区系统
  4. 新手必看 四位数码管显示原理
  5. V19-Bluetooth抓log
  6. Linux个人笔记(一)之快乐的linux命令行
  7. react实现路由跳转
  8. 从Google Test 转到 Catch
  9. 机器人跳跃问题(字节跳动笔试题)
  10. python中小球落地问题_Python解决抛小球问题 求小球下落经历的距离之和示例