zoukankan      html  css  js  c++  java
  • 源码部署pxc集群

    想了想还是研究一下怎么源码安装pxc吧,毕竟很多组件都是源码安装的。

    环境:

    yum install -y boost-devel  libodb-boost-devel  check-devel openssl-devel libaio-devel 
    

    安装scons

    需要2.7+ 的Python
    wget https://nchc.dl.sourceforge.net/project/scons/scons/3.0.1/scons-3.0.1.tar.gz
    tar xf scons-3.0.1.tar.gz 
    cd scons-3.0.1
    python setup.py install  
    
    安装 Percona-XtraDB-Cluster:

    tcmalloc 安装忽略,mysql用户创建忽略

    wget ftp://ftp.pbone.net/mirror/apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/socat-1.7.2.4-1.el6.rf.x86_64.rpm 
    rpm -ivh socat-1.7.2.4-1.el6.rf.x86_64.rpm  
    
    wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/rudi_m:/devel-snap/CentOS_CentOS-6/x86_64/libev4-4.15-7.1.x86_64.rpm 
    rpm -ivh libev4-4.15-7.1.x86_64.rpm 
    
    wget ftp://ftp.pbone.net/mirror/ftp.centos.org/6.9/os/x86_64/Packages/numactl-2.0.9-2.el6.x86_64.rpm 
    rpm -ivh numactl-2.0.9-2.el6.x86_64.rpm 
    
    wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/viliampucik:/obs/RedHat_RHEL-6/x86_64/compat-readline5-5.2-17.4.x86_64.rpm 
    rpm -ivh compat-readline5-5.2-17.4.x86_64.rpm
    
    wget https://repo.percona.com/release/centos/6Server/RPMS/x86_64/percona-xtrabackup-24-2.4.12-1.el6.x86_64.rpm
    rpm -ivh percona-xtrabackup-24-2.4.12-1.el6.x86_64.rpm
    
    安装libgalera_smm.so
    wget https://www.percona.com/downloads/Percona-XtraDB-Cluster-57/Percona-XtraDB-Cluster-5.7.23-31.31-2/source/tarball/Percona-XtraDB-Cluster-5.7.23-31.31.tar.gz
    tar xf Percona-XtraDB-Cluster-5.7.23-31.31.tar.gz
    cd Percona-XtraDB-Cluster-5.7.23-31.31/percona-xtradb-cluster-galera/
    scons -j4 psi=1 --config=force   revno=    libgalera_smm.so
    

    之后,当前目录下就有一个libgalera_smm.so文件

    安装pxc
    #将boost_1_59_0.tar.gz放到源码包当前目录,cmake过程会自动加压
    cd ../
    cp /dist/dist/boost_1_59_0.tar.gz .
    mkdir build
    cd build/
    CHOST="x86_64-pc-linux-gnu" CFLAGS="-march=nocona -O2 -pipe" CXXFLAGS="-march=nocona -O2 -pipe" 
     cmake ../  
     -DMYSQL_USER=mysql 
     -DCMAKE_BUILD_TYPE:STRING=Release 
     -DBUILD_CONFIG=mysql_release 
     -DWITH_EMBEDDED_SERVER=OFF 
     -DFEATURE_SET=community 
     -DENABLE_DTRACE=OFF 
     -DWITH_SSL=system 
     -DWITH_ZLIB=system  
     -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
     -DMYSQL_SERVER_SUFFIX=-29.22 
     -DWITH_INNODB_DISALLOW_WRITES=ON 
     -DWITH_WSREP=ON 
     -DWITH_UNIT_TESTS=0 
     -DWITH_READLINE=system 
     -DWITHOUT_TOKUDB=ON 
     -DWITHOUT_ROCKSDB=ON 
     -DWITH_PAM=ON 
     -DWITH_INNODB_MEMCACHED=ON 
     -DDOWNLOAD_BOOST=1 
     -DWITH_BOOST=..
     -DWITH_SCALABILITY_METRICS=ON 
     -DCMAKE_EXE_LINKER_FLAGS="-ltcmalloc" 
     -DWITH_SAFEMALLOC=OFF  
     -DWITHOUT_BLACKHOLE_STORAGE_ENGINE=1 
     -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 
     -DWITHOUT_ARCHIVE_STORAGE_ENGINE=1 
    make -j $CPUcount
    make install
    
    #将libgalera_smm.so复制到basedir的lib目录中,或者可以再mysql实例的配置文件中指定文件位置也行
    cd ../
    cp percona-xtradb-cluster-galera/libgalera_smm.so /usr/local/mysql/lib/
    

    到目前为止,pxc的一个实例就安装好了。剩下的就是按套路配置启动了。

    配置
    #一定要让path变量能找得到pxc实例的二进制文件和相关脚本
    ln -sv /usr/local/mysql/bin/* /usr/local/bin/  
    
    mkdir -p /data/database/mysql
    chown mysql:mysql -R /data/database/mysql
    
    #让mysqld支持tcmalloc
    cd /usr/local/mysql
    sed -i '/Initialize script globals/ a export LD_PRELOAD=/usr/local/lib/libtcmalloc.so' bin/mysqld_safe
    
    # 配置文件:
    [client]
    port=3306
    socket = /tmp/mysql.sock
    
    [mysqld]
    server-id=132
    port=3306
    datadir=/data/database/mysql
    tmpdir=/data/database/mysql
    #basedir=/usr/local/mysql
    socket = /tmp/mysql.sock
    log-error=/data/database/mysql/thai_pxc_cluster.err
    pid-file=/data/database/mysql/thai_pxc_cluster.pid
    user=mysql
    secure_file_priv = ""
    performance_schema_max_table_instances=50000
    table_definition_cache=400
    table_open_cache=1024
    
    # General
    back_log=2000
    connect_timeout=15
    max_connections=1024
    max_allowed_packet = 16M
    max_heap_table_size = 128M
    sort_buffer_size =  8M
    net_buffer_length = 8K
    read_buffer_size = 8M
    read_rnd_buffer_size = 32M
    query_cache_size = 128M
    join_buffer_size=8M
    bulk_insert_buffer_size=128M
    concurrent_insert=2
    delay_key_write=ON
    delayed_insert_limit=4000
    delayed_insert_timeout=600
    delayed_queue_size=4000
    tmp_table_size = 256M
    thread_cache_size=120
    character-set-server=utf8
    metadata_locks_hash_instances=256
    open-files-limit = 10240
    skip-name-resolve
    core_file
    transaction-isolation=READ-COMMITTED
    sql_mode = ""
    
    # Innodb
    innodb_buffer_pool_size = 4096M
    innodb_buffer_pool_instances=8
    innodb_log_file_size = 1024M
    innodb_log_buffer_size = 16M
    innodb_lock_wait_timeout = 20
    innodb_autoinc_lock_mode=2
    innodb_read_io_threads = 5
    innodb_write_io_threads = 5
    innodb_thread_concurrency = 8
    innodb_doublewrite=1
    innodb_flush_log_at_trx_commit = 2
    innodb_flush_method = 'O_DIRECT'
    innodb-page-cleaners=8
    innodb_purge_threads=4
    innodb_lru_scan_depth=2048
    innodb_io_capacity=8000
    innodb_io_capacity_max=16000
    innodb_adaptive_hash_index=OFF
    innodb-change-buffering=none
    innodb_flush_neighbors=0
    innodb_max_dirty_pages_pct = 90
    innodb_max_dirty_pages_pct_lwm = 10
    
    
    # Binlog
    relay-log=relay-1
    binlog_format=ROW
    enforce-gtid-consistency
    gtid-mode=on
    master-info-repository=TABLE
    relay-log-info-repository=TABLE
    binlog-checksum=NONE
    log-bin=mysql-bin
    max-binlog-size=128M
    log_slave_updates
    expire_logs_days=3
    sync_binlog=1
    binlog_cache_size = 4M
    log_output=FILE
    slow_query_log=1
    slow_query_log_file=/data/database/mysql/slowquery.log
    max_slowlog_size=1024m
    max_slowlog_files=10
    long_query_time=1
    
    # Monitoring
    innodb_monitor_enable='%'
    performance_schema=ON
    performance_schema_instrument='%synch%=on'
    
    # Galera
    symbolic-links=0
    explicit_defaults_for_timestamp=true
    #wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
    wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so
    wsrep_cluster_address=gcomm://30.0.0.227,30.0.0.226,30.0.0.225
    default_storage_engine=InnoDB
    wsrep_slave_threads= 20
    wsrep_log_conflicts
    wsrep_cluster_name=pxc_cluster
    wsrep_node_name=pxc_node_30.0.0.226
    wsrep_node_address=30.0.0.226
    wsrep_sst_method=xtrabackup-v2
    wsrep_sst_auth="sstuser:s3cret"
    pxc_strict_mode=DISABLED
    
    初始化(第一个节点)
    /usr/local/mysql/bin/mysqld  --initialize  --datadir=/data/database/mysql/  --basedir=/usr/local/mysql/  --user=mysql
    

    在初始化过程中会生成root@local的密码,需要用这个密码做第一次登录并修改。类似:

    2018-05-08T02:34:50.116777Z 1 [Note] A temporary password is generated for root@localhost: dGpgf>_vj90>
    
    启动(第一个节点)
    /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --wsrep-new-cluster --lc_messages_dir=/usr/local/mysql/share/  --lc_messages=en_US &
    
    改root密码
    mysql> alter user root@localhost identified by '20c0dc7315fe8db65cbab532818e0e7a';
    
    配置SST认证账号
    mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 's3cret';
    mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
    mysql> FLUSH PRIVILEGES;
    
    启动其他节点
    /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --lc_messages_dir=/usr/local/mysql/share/ --lc_messages=en_US &
    
  • 相关阅读:
    shell 如何避免误删目录
    Linux 禁止用户或 IP通过 SSH 登录
    gitlab不能启动了
    清空分区表里某个分区的数据
    mysql错误Table ‘./mysql/proc’ is marked as crashed and should be repaired
    MySQL Server参数优化
    linux下删除乱码文件、目录
    ERROR 1044 (42000): Access denied for user 'root'@'localhost'
    awk 打印从某一列到最后一列的内容
    连接和关闭资源工具类
  • 原文地址:https://www.cnblogs.com/wshenjin/p/9007041.html
Copyright © 2011-2022 走看看