设为首页 收藏本站
查看: 4591|回复: 0

[经验分享] MySQL集群PXC的搭建

[复制链接]

尚未签到

发表于 2017-6-4 09:36:49 | 显示全部楼层 |阅读模式
MySQL集群PXC的搭建
  最近公司某客户要求我们的数据库搭建PXC集群以保证他们的系统高性能和搞稳定性
  以后花费了一些时间去搭建和测试,也踩过一些坑,准备分享出来
  系统:centos6.6
PXC:5.6.26
  
建议关闭iptables, 4个端口 3306,4444,4567,4568
pxc环境所涉及的端口:
  #mysql实例端口:3306.   
  
#pxc cluster相互通讯的端口:4567
Port for group communication, default 4567. It can be changed by the option:   
wsrep_provider_options ="gmcast.listen_addr=tcp://0.0.0.0:4010; "
  
#用于SST传送的端口:4444
Port for State Transfer, default 4444. It can be changed by the option:  
wsrep_sst_receive_address=10.11.12.205:5555
  
#用于IST传送的端口:4568
Port for Incremental State Transfer, default port for group communication + 1 (4568). It can be changed by the option:  
wsrep_provider_options = "ist.recv_addr=10.11.12.206:7777; "
  node1    192.168.3.130
node2    192.168.3.129
node3    192.168.3.128
  1.安装软件依赖包(添加repl源,再安装依赖,3台server操作一样。)



rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes socat nc -y
  2.安装xtrabackup(PXC同步数据需要用到)



yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
yum install -y percona-xtrabackup-24
  
3.下载安装Percona-XtraDB-Cluster
  #安装开发包



yum install -y libaio*
yum groupinstall -y 'Development tools'
yum install -y libssl.so.6
ln -sf /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.6
ln -sf /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.6

wget https://www.percona.com/downloads/Percona-XtraDB-Cluster-56/Percona-XtraDB-Cluster-5.6.26-25.12/binary/tarball/Percona-XtraDB-Cluster-5.6.26-rel74.0-25.12.1.Linux.x86_64.tar.gz
tar zxvf Percona-XtraDB-Cluster-5.6.26-rel74.0-25.12.1.Linux.x86_64.tar.gz
useradd -M -s /sbin/nologin mysql
mkdir -p /usr/local/pxc
mkdir -p /data/pxc/mysql3306/{data,tmp,logs}
mv /data/download/Percona-XtraDB-Cluster-5.6.26-rel74.0-25.12.1.Linux.x86_64/* /usr/local/pxc/
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
chown -R mysql:mysql /data/pxc/mysql3306/
chown -R mysql:mysql /usr/local/pxc
  
修改my.cnf配置文件,注意在[mysqld]段落添加PXC的参数:
vi /etc/my.cnf
  130



[client]
port            = 3306
socket            = /data/mysql/mysql3306/tmp/mysql.sock   

# The MySQL server
[mysqld]
#########Basic##################
explicit_defaults_for_timestamp=true
port            = 3306  
user        = mysql   
basedir         = /usr/local/mysql  
datadir         = /data/mysql/mysql3306/data   
tmpdir          = /data/mysql/mysql3306/tmp   
pid-file        = /data/mysql/mysql3306/tmp/mysql.pid   
socket            = /data/mysql/mysql3306/tmp/mysql.sock   
#skip-grant-tables  
#character set
character_set_server = utf8

open_files_limit = 65535
back_log = 500
#event_scheduler = ON
#lower_case_table_names=1
skip-external-locking
skip_name_resolve = 1
default-storage-engine = InnoDB

#timeout
wait_timeout=1000
interactive_timeout=1000
connect_timeout = 20

server-id       =1303306  #ip最后一位+端口号= 1003376

#percona 的--recursion-method slavehost模式
#report_host = 10.105.9.115
#report_port = 3306

#plugin
plugin-load="semisync_master.so;semisync_slave.so"

#########error log#############
log-error = /data/mysql/mysql3306/logs/error.log  
log-warnings = 2  
#########general log#############
#general_log=1
#general_log_file=/data/mysql/mysql3306/logs/mysql.log
#########slow log#############
slow_query_log = 1
long_query_time=1
slow_query_log_file = /data/mysql/mysql3306/logs/mysql.slow   

############# for replication###################
log-bin     = /data/mysql/mysql3306/logs/mysql-bin   
binlog_format = row
max_binlog_size = 500M
binlog_cache_size = 2M
max_binlog_cache_size = 2M
expire-logs-days = 7
slave-net-timeout=30

log_bin_trust_function_creators = 1
log-slave-updates = 1   
skip-slave-start = 1
#read_only =1    #从上设置,5.7是super_read_only
#GTID
gtid-mode = on
binlog_gtid_simple_recovery=1
enforce_gtid_consistency=1
#relay log
relay-log = /data/mysql/mysql3306/logs/mysql-relay  
relay-log-index=/data/mysql/mysql3306/logs/relay-bin.index
max-relay-log-size = 500M

#replication crash safe
sync_master_info = 1
sync_relay_log_info = 1
sync_relay_log = 1
relay_log_recovery = 1
master_info_repository = TABLE
relay_log_info_repository = TABLE
#semisync   动态开启 主从切换的时候用
#rpl_semi_sync_master_enabled = 1
#rpl_semi_sync_master_wait_no_slave = 1
#rpl_semi_sync_master_timeout = 1000
#rpl_semi_sync_slave_enabled = 1
#rpl_semi_sync_master_timeout = 100000000 #不要超时,防止切异步,保证主从数据的完全一致性,默认是10000
#rpl_semi_sync_master_wait_point = 'after_sync' #5.7新增参数 after_sync 5.7增强半同步 after_commit5.6普通半同步
#rpl_semi_sync_master_wait_for_slave_count = 2  #5.7新增参数 等待多少个从库接收到binlog

#ignore
#replicate-ignore-db = 'school','school2'
#replicate-do-db = 'school','school2'
#Multi-threaded Slave
#slave_parallel_workers=16
#slave-parallel-type=LOGICAL_CLOCK
#slave-parallel-type=DATABASE
#replication error
#slave-skip-errors=1007,1051,1062
#######per_thread_buffers#####################
max_connections=1100
max_user_connections=1000
max_connect_errors=1000
#myisam_recover
key_buffer_size = 64M
max_allowed_packet = 16M
#table_cache = 3096
table_open_cache = 6144
table_definition_cache = 4096

read_buffer_size = 1M
join_buffer_size = 128K
read_rnd_buffer_size = 1M
#myisam
sort_buffer_size = 128K
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1

myisam_sort_buffer_size = 32M
tmp_table_size = 32M
max_heap_table_size = 64M
query_cache_type=0
query_cache_size = 0
bulk_insert_buffer_size = 32M
thread_cache_size = 64
#thread_concurrency = 32
thread_stack = 192K

###############InnoDB###########################
innodb_data_home_dir = /data/mysql/mysql3306/data      
innodb_log_group_home_dir = /data/mysql/mysql3306/logs   
innodb_data_file_path = ibdata1:1000M:autoextend
innodb_buffer_pool_size = 1G  #根据内存大小设置
innodb_buffer_pool_instances    = 8
#innodb_additional_mem_pool_size = 16M
innodb_log_file_size = 500M
innodb_log_buffer_size = 16M
innodb_log_files_in_group = 3
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
innodb_lock_wait_timeout = 10
innodb_sync_spin_loops = 40
innodb_max_dirty_pages_pct = 80
innodb_support_xa = 1
innodb_thread_concurrency = 0
innodb_thread_sleep_delay = 500
innodb_concurrency_tickets = 1000
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
innodb_read_io_threads = 16
innodb_write_io_threads = 16
innodb_io_capacity = 800  #机械盘800 ssd 2000
innodb_flush_neighbors = 1
innodb_file_format = Barracuda
innodb_purge_threads=1   #5.6只能有一个,5.7可以设置多个
innodb_purge_batch_size = 32
innodb_old_blocks_pct=75
innodb_change_buffering=all
innodb_stats_on_metadata=OFF
innodb_print_all_deadlocks = 1
#innodb_status_output=1
#innodb_status_output_locks=1
performance_schema=0   #是否打开P_S库进行性能收集
transaction_isolation = READ-COMMITTED
#innodb_force_recovery=0
#innodb_fast_shutdown=1
#innodb_status_file = 1  #实时输出show engine innodb status到innodb_status文件
############# PXC #####################                                                
innodb_autoinc_lock_mode=2                             #自增锁的优化                                                
wsrep_cluster_name=pxc-dongzheng                        #集群名字                          
wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so             #库文件位置                        
wsrep_cluster_address=gcomm://192.168.3.130,192.168.3.128,192.168.3.129       #节点中所有ip     
wsrep_node_address=192.168.3.130           #本节点的ip                                         
wsrep_slave_threads=2                    # 开启的复制线程数,建议cpu核数*2  ,解决apply_cb跟不上问题                                      
wsrep_sst_auth=sst:dongzheng                  #sst模式需要的用户名和密码                                   
wsrep_sst_method=xtrabackup-v2                  #采用什么方式复制数据。还支持mysqldump,rsync                                 
#wsrep_provider_options="debug=1;gcache.size=2G;pc.ignore_quorum=true;pc.ignore_sb=true"              #打开调试模式
wsrep_provider_options="debug=1;gcache.size=2G;"           
wsrep_max_ws_rows=131072
wsrep_max_ws_size=16000

[mysqldump]
quick
max_allowed_packet = 128M

[mysql]
no-auto-rehash
max_allowed_packet = 128M
prompt                         = '(product)\u@\h:\p [\d]> '
default_character_set          = utf8

[myisamchk]
key_buffer_size = 64M
sort_buffer_size = 512k
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
#malloc-lib= /usr/local/mysql/lib/mysql/libjemalloc.so
  129


DSC0000.gif DSC0001.gif


[client]
port            = 3306
socket            = /data/mysql/mysql3306/tmp/mysql.sock   

# The MySQL server
[mysqld]
#########Basic##################
explicit_defaults_for_timestamp=true
port            = 3306  
user           = mysql   
basedir         = /usr/local/mysql  
datadir         = /data/mysql/mysql3306/data   
tmpdir          = /data/mysql/mysql3306/tmp   
pid-file        = /data/mysql/mysql3306/tmp/mysql.pid   
socket            = /data/mysql/mysql3306/tmp/mysql.sock   
#skip-grant-tables  
#character set
character_set_server = utf8

open_files_limit = 65535
back_log = 500
#event_scheduler = ON
#lower_case_table_names=1
skip-external-locking
skip_name_resolve = 1
default-storage-engine = InnoDB

#timeout
wait_timeout=1000
interactive_timeout=1000
connect_timeout = 20

server-id       =1293306  #ip最后一位+端口号= 1003376

#percona 的--recursion-method slavehost模式
#report_host = 10.105.9.115
#report_port = 3306

#plugin
plugin-load="semisync_master.so;semisync_slave.so"

#########error log#############
log-error = /data/mysql/mysql3306/logs/error.log  
log-warnings = 2  
#########general log#############
#general_log=1
#general_log_file=/data/mysql/mysql3306/logs/mysql.log
#########slow log#############
slow_query_log = 1
long_query_time=1
slow_query_log_file = /data/mysql/mysql3306/logs/mysql.slow   

############# for replication###################
log-bin     = /data/mysql/mysql3306/logs/mysql-bin   
binlog_format = row
max_binlog_size = 500M
binlog_cache_size = 2M
max_binlog_cache_size = 2M
expire-logs-days = 7
slave-net-timeout=30

log_bin_trust_function_creators = 1
log-slave-updates = 1   
skip-slave-start = 1
#read_only =1    #从上设置,5.7是super_read_only
#GTID
gtid-mode = on
binlog_gtid_simple_recovery=1
enforce_gtid_consistency=1
#relay log
relay-log = /data/mysql/mysql3306/logs/mysql-relay  
relay-log-index=/data/mysql/mysql3306/logs/relay-bin.index
max-relay-log-size = 500M

#replication crash safe
sync_master_info = 1
sync_relay_log_info = 1
sync_relay_log = 1
relay_log_recovery = 1
master_info_repository = TABLE
relay_log_info_repository = TABLE
#semisync   动态开启 主从切换的时候用
#rpl_semi_sync_master_enabled = 1
#rpl_semi_sync_master_wait_no_slave = 1
#rpl_semi_sync_master_timeout = 1000
#rpl_semi_sync_slave_enabled = 1
#rpl_semi_sync_master_timeout = 100000000 #不要超时,防止切异步,保证主从数据的完全一致性,默认是10000
#rpl_semi_sync_master_wait_point = 'after_sync' #5.7新增参数 after_sync 5.7增强半同步 after_commit5.6普通半同步
#rpl_semi_sync_master_wait_for_slave_count = 2  #5.7新增参数 等待多少个从库接收到binlog

#ignore
#replicate-ignore-db = 'school','school2'
#replicate-do-db = 'school','school2'
#Multi-threaded Slave
#slave_parallel_workers=16
#slave-parallel-type=LOGICAL_CLOCK
#slave-parallel-type=DATABASE
#replication error
#slave-skip-errors=1007,1051,1062
#######per_thread_buffers#####################
max_connections=1100
max_user_connections=1000
max_connect_errors=1000
#myisam_recover
key_buffer_size = 64M
max_allowed_packet = 16M
#table_cache = 3096
table_open_cache = 6144
table_definition_cache = 4096

read_buffer_size = 1M
join_buffer_size = 128K
read_rnd_buffer_size = 1M
#myisam
sort_buffer_size = 128K
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1

myisam_sort_buffer_size = 32M
tmp_table_size = 32M
max_heap_table_size = 64M
query_cache_type=0
query_cache_size = 0
bulk_insert_buffer_size = 32M
thread_cache_size = 64
#thread_concurrency = 32
thread_stack = 192K

###############InnoDB###########################
innodb_data_home_dir = /data/mysql/mysql3306/data      
innodb_log_group_home_dir = /data/mysql/mysql3306/logs   
innodb_data_file_path = ibdata1:1000M:autoextend
innodb_buffer_pool_size = 1G  #根据内存大小设置
innodb_buffer_pool_instances    = 8
#innodb_additional_mem_pool_size = 16M
innodb_log_file_size = 500M
innodb_log_buffer_size = 16M
innodb_log_files_in_group = 3
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
innodb_lock_wait_timeout = 10
innodb_sync_spin_loops = 40
innodb_max_dirty_pages_pct = 80
innodb_support_xa = 1
innodb_thread_concurrency = 0
innodb_thread_sleep_delay = 500
innodb_concurrency_tickets = 1000
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
innodb_read_io_threads = 16
innodb_write_io_threads = 16
innodb_io_capacity = 800  #机械盘800 ssd 2000
innodb_flush_neighbors = 1
innodb_file_format = Barracuda
innodb_purge_threads=1   #5.6只能有一个,5.7可以设置多个
innodb_purge_batch_size = 32
innodb_old_blocks_pct=75
innodb_change_buffering=all
innodb_stats_on_metadata=OFF
innodb_print_all_deadlocks = 1
#innodb_status_output=1
#innodb_status_output_locks=1
performance_schema=0   #是否打开P_S库进行性能收集
transaction_isolation = READ-COMMITTED
#innodb_force_recovery=0
#innodb_fast_shutdown=1
#innodb_status_file = 1  #实时输出show engine innodb status到innodb_status文件
############# PXC #####################                                                
innodb_autoinc_lock_mode=2                                                      
wsrep_cluster_name=pxc-dongzheng                                                
wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so                           
wsrep_cluster_address=gcomm://192.168.3.130,192.168.3.128,192.168.3.129         
wsrep_node_address=192.168.3.129                                                
wsrep_slave_threads=2                                                           
wsrep_sst_auth=sst:dongzheng                                               
wsrep_sst_method=xtrabackup-v2   
#wsrep_provider_options="debug=1;gcache.size=2G;pc.ignore_quorum=true;pc.ignore_sb=true"              #打开调试模式
wsrep_provider_options="debug=1;gcache.size=2G;"  
wsrep_max_ws_rows=131072
wsrep_max_ws_size=16000


[mysqldump]
quick
max_allowed_packet = 128M

[mysql]
no-auto-rehash
max_allowed_packet = 128M
prompt                         = '(product)\u@\h:\p [\d]> '
default_character_set          = utf8

[myisamchk]
key_buffer_size = 64M
sort_buffer_size = 512k
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
#malloc-lib= /usr/local/mysql/lib/mysql/libjemalloc.so
View Code  128





[client]
port            = 3306
socket            = /data/mysql/mysql3306/tmp/mysql.sock   

# The MySQL server
[mysqld]
#########Basic##################
explicit_defaults_for_timestamp=true
port            = 3306  
user           = mysql   
basedir         = /usr/local/mysql  
datadir         = /data/mysql/mysql3306/data   
tmpdir          = /data/mysql/mysql3306/tmp   
pid-file        = /data/mysql/mysql3306/tmp/mysql.pid   
socket            = /data/mysql/mysql3306/tmp/mysql.sock   
#skip-grant-tables  
#character set
character_set_server = utf8

open_files_limit = 65535
back_log = 500
#event_scheduler = ON
#lower_case_table_names=1
skip-external-locking
skip_name_resolve = 1
default-storage-engine = InnoDB

#timeout
wait_timeout=1000
interactive_timeout=1000
connect_timeout = 20

server-id       =1283306  #ip最后一位+端口号= 1003376

#percona 的--recursion-method slavehost模式
#report_host = 10.105.9.115
#report_port = 3306

#plugin
plugin-load="semisync_master.so;semisync_slave.so"

#########error log#############
log-error = /data/mysql/mysql3306/logs/error.log  
log-warnings = 2  
#########general log#############
#general_log=1
#general_log_file=/data/mysql/mysql3306/logs/mysql.log
#########slow log#############
slow_query_log = 1
long_query_time=1
slow_query_log_file = /data/mysql/mysql3306/logs/mysql.slow   

############# for replication###################
log-bin     = /data/mysql/mysql3306/logs/mysql-bin   
binlog_format = row
max_binlog_size = 500M
binlog_cache_size = 2M
max_binlog_cache_size = 2M
expire-logs-days = 7
slave-net-timeout=30

log_bin_trust_function_creators = 1
log-slave-updates = 1   
skip-slave-start = 1
#read_only =1    #从上设置,5.7是super_read_only
#GTID
gtid-mode = on
binlog_gtid_simple_recovery=1
enforce_gtid_consistency=1
#relay log
relay-log = /data/mysql/mysql3306/logs/mysql-relay  
relay-log-index=/data/mysql/mysql3306/logs/relay-bin.index
max-relay-log-size = 500M

#replication crash safe
sync_master_info = 1
sync_relay_log_info = 1
sync_relay_log = 1
relay_log_recovery = 1
master_info_repository = TABLE
relay_log_info_repository = TABLE
#semisync   动态开启 主从切换的时候用
#rpl_semi_sync_master_enabled = 1
#rpl_semi_sync_master_wait_no_slave = 1
#rpl_semi_sync_master_timeout = 1000
#rpl_semi_sync_slave_enabled = 1
#rpl_semi_sync_master_timeout = 100000000 #不要超时,防止切异步,保证主从数据的完全一致性,默认是10000
#rpl_semi_sync_master_wait_point = 'after_sync' #5.7新增参数 after_sync 5.7增强半同步 after_commit5.6普通半同步
#rpl_semi_sync_master_wait_for_slave_count = 2  #5.7新增参数 等待多少个从库接收到binlog

#ignore
#replicate-ignore-db = 'school','school2'
#replicate-do-db = 'school','school2'
#Multi-threaded Slave
#slave_parallel_workers=16
#slave-parallel-type=LOGICAL_CLOCK
#slave-parallel-type=DATABASE
#replication error
#slave-skip-errors=1007,1051,1062
#######per_thread_buffers#####################
max_connections=1100
max_user_connections=1000
max_connect_errors=1000
#myisam_recover
key_buffer_size = 64M
max_allowed_packet = 16M
#table_cache = 3096
table_open_cache = 6144
table_definition_cache = 4096

read_buffer_size = 1M
join_buffer_size = 128K
read_rnd_buffer_size = 1M
#myisam
sort_buffer_size = 128K
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1

myisam_sort_buffer_size = 32M
tmp_table_size = 32M
max_heap_table_size = 64M
query_cache_type=0
query_cache_size = 0
bulk_insert_buffer_size = 32M
thread_cache_size = 64
#thread_concurrency = 32
thread_stack = 192K

###############InnoDB###########################
innodb_data_home_dir = /data/mysql/mysql3306/data      
innodb_log_group_home_dir = /data/mysql/mysql3306/logs   
innodb_data_file_path = ibdata1:1000M:autoextend
innodb_buffer_pool_size = 1G  #根据内存大小设置
innodb_buffer_pool_instances    = 8
#innodb_additional_mem_pool_size = 16M
innodb_log_file_size = 500M
innodb_log_buffer_size = 16M
innodb_log_files_in_group = 3
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
innodb_lock_wait_timeout = 10
innodb_sync_spin_loops = 40
innodb_max_dirty_pages_pct = 80
innodb_support_xa = 1
innodb_thread_concurrency = 0
innodb_thread_sleep_delay = 500
innodb_concurrency_tickets = 1000
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
innodb_read_io_threads = 16
innodb_write_io_threads = 16
innodb_io_capacity = 800  #机械盘800 ssd 2000
innodb_flush_neighbors = 1
innodb_file_format = Barracuda
innodb_purge_threads=1   #5.6只能有一个,5.7可以设置多个
innodb_purge_batch_size = 32
innodb_old_blocks_pct=75
innodb_change_buffering=all
innodb_stats_on_metadata=OFF
innodb_print_all_deadlocks = 1
#innodb_status_output=1
#innodb_status_output_locks=1
performance_schema=0   #是否打开P_S库进行性能收集
transaction_isolation = READ-COMMITTED
#innodb_force_recovery=0
#innodb_fast_shutdown=1
#innodb_status_file = 1  #实时输出show engine innodb status到innodb_status文件
############# PXC #####################                                                
innodb_autoinc_lock_mode=2                                                      
wsrep_cluster_name=pxc-dongzheng                                                
wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so                           
wsrep_cluster_address=gcomm://192.168.3.130,192.168.3.128,192.168.3.129         
wsrep_node_address=192.168.3.128                                               
wsrep_slave_threads=2                                                           
wsrep_sst_auth=sst:dongzheng                                               
wsrep_sst_method=xtrabackup-v2   
#wsrep_provider_options="debug=1;gcache.size=2G;pc.ignore_quorum=true;pc.ignore_sb=true"              #打开调试模式
wsrep_provider_options="debug=1;gcache.size=2G;"   
wsrep_max_ws_rows=131072
wsrep_max_ws_size=16000


[mysqldump]
quick
max_allowed_packet = 128M

[mysql]
no-auto-rehash
max_allowed_packet = 128M
prompt                         = '(product)\u@\h:\p [\d]> '
default_character_set          = utf8

[myisamchk]
key_buffer_size = 64M
sort_buffer_size = 512k
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
#malloc-lib= /usr/local/mysql/lib/mysql/libjemalloc.so
View Code


cd /usr/local/pxc/
./scripts/mysql_install_db --defaults-file=/etc/my.cnf
  看到两次ok
  #修改启动脚本
vi /etc/init.d/mysql



basedir=/usr/local/pxc
datadir=/data/pxc/mysql3306/data
  
4.启动,进行授权操作,对于第一个节点必须以特殊方式启动,如下:



/etc/init.d/mysql --help
Usage: mysql {start|stop|restart|restart-bootstrap|reload|force-reload|status|bootstrap-pxc} [ MySQL (Percona XtraDB Cluster) options ]
  第一个节点启动



/etc/init.d/mysql bootstrap-pxc
  5.安全加固
连接mysql:mysql -uroot -p -S  /data/mysql/mysql3306/tmp/mysql.sock
delete from mysql.user where user!='root' or host!='localhost';
truncate table mysql.db;   
drop database test;
进行授权,这里用户名密码是my.cnf里定义的用户名sst  密码dongzheng
GRANT ALL PRIVILEGES ON *.* TO 'sst'@'%' identified by 'dongzheng';
use mysql;
UPDATE user SET password=PASSWORD('123456') WHERE  user='root';
flush privileges;
PXC状态确认
show global status like 'wsrep%';

6.netstat进行查看,可以发现启动两个端口
netstat -lntp | grep mysql
tcp        0      0 0.0.0.0:4567                0.0.0.0:*                   LISTEN      2964/mysqld         
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      2964/mysqld         

  
另外两个节点的启动和配置
  
node2 my.cnf的PXC 配置节:
############# PXC #####################                                                
innodb_autoinc_lock_mode=2                                                       #自增锁的优化
wsrep_cluster_name=pxc-dongzheng                                                 #集群名字
wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so                             #库文件
wsrep_cluster_address=gcomm://192.168.2.130,192.168.3.128,192.168.0.129          #节点中所有ip
wsrep_node_address=192.168.0.129                                                 #节点的ip
wsrep_slave_threads=2                                                            #开启的复制线程数,cpu核数*2
wsrep_sst_auth=sst:dongzheng                                                         #sst模式需要的用户名和密码
wsrep_sst_method=xtrabackup-v2                                                   #采用什么方式复制数据。还支持mysqldump,rsync
wsrep_provider_options="debug=1;socket.checksum=1"                               #打开调试模式
  
node3 my.cnf的PXC 配置节:
############# PXC #####################                                                
innodb_autoinc_lock_mode=2                                                       #自增锁的优化
wsrep_cluster_name=pxc-dongzheng                                                 #集群名字
wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so                             #库文件
wsrep_cluster_address=gcomm://192.168.2.130,192.168.3.128,192.168.0.129          #节点中所有ip
wsrep_node_address=192.168.0.128                                                 #节点的ip
wsrep_slave_threads=2                                                            #开启的复制线程数,cpu核数*2
wsrep_sst_auth=sst:dongzheng                                                         #sst模式需要的用户名和密码
wsrep_sst_method=xtrabackup-v2                                                   #采用什么方式复制数据。还支持mysqldump,rsync
wsrep_provider_options="debug=1;socket.checksum=1"                                #打开调试模式
  
启动
/etc/init.d/mysql start
  启动的时候会把主节点的所有数据传送过从节点包括所有数据库和日志,简单来讲从节点在启动的时候会做SST同步
  
从节点不需要做安全加固,因为从节点跟主节点的数据库和数据都一样
PXC状态确认
show global status like 'wsrep%';

netstat进行查看,可以发现启动两个端口
netstat -lntp | grep mysql
tcp        0      0 0.0.0.0:4567                0.0.0.0:*                   LISTEN      2964/mysqld         
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      2964/mysqld   
  ###############################################################
集群关闭
所有节点都用
/etc/init.d/mysql  stop
  节点重启
第一个节点用:/etc/init.d/mysql restart-bootstrap
其他节点用:/etc/init.d/mysql  restart
  集群关闭之后,再启动,谁做第一个节点谁就执行/etc/init.d/mysql  bootstrap-pxc
  如果不是所有节点都关闭,那么当启动集群节点的时候不需要执行/etc/init.d/mysql  bootstrap-pxc
  /etc/init.d/mysql --help
Usage: mysql {start|stop|restart|restart-bootstrap|reload|force-reload|status|bootstrap-pxc}  [ MySQL (Percona XtraDB Cluster) options ]
  
到这里搭建就基本结束了。3个节点同时支持read/write操作。

  
新加入节点
  只需要安装好Percona-XtraDB-Cluster,并且在 my.cnf 添加PXC 配置节即可

  
报错处理
  (1)加载 so  文件加不到
  如:



Installing    MySQL    system    tables...
/usr/local/mysql/bin/mysqld:    error    while    loading    shared    libraries:    libssl.so.6:    cannot    open
shared    object    file:    No    such    file    or    directory
  可能的问题:
  openssl 没装:



yum    install    –y    openssl    openssl-devel
  如果提示已经安装,可以使用



updatedb
locate    libssl.so
  然后用



ldd    /usr/local/mysql/bin/mysqld
  查看还有那些依赖需安装
DSC0002.jpg

  确认一下:
DSC0003.jpg

  看样子都是存在的,但版本不对。做一个软链就可以修复了。
  #cd /usr/lib64/
DSC0004.jpg

DSC0005.jpg

  最后在用ldd /usr/local/mysql/bin/mysqld 去确认是否有没加载的so, 如果存在同样的方法修复。
  (2)安装中 socat 找不到



/usr/local/pxc_56/bin/mysqld_safe --defaults-file=/home/mysql/my3307.cnf --ledir=/usr/local/pxc_56/bin/ &
有可能启动会提示:
WSREP_SST: [ERROR] socat not found in path: /usr/sbin:/sbin:/usr/local/pxc_56//bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/lamp/mysql/bin:/root/bi
n (20160509 10:58:04.404)
2016-05-09 10:58:04 54809 [ERROR] WSREP: Failed to read 'ready <addr>' from: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '192.168.1.238' --datadir '/home/mysql/I3307/
' --defaults-file '/home/mysql/I3307/my3307.cnf' --defaults-group-suffix '' --parent '54809'  ''
Read: '(null)'
2016-05-09 10:58:04 54809 [ERROR] WSREP: Process completed with error: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '192.168.1.238' --datadir '/home/mysql/I3307/' --de
faults-file '/home/mysql/I3307/my3307.cnf' --defaults-group-suffix '' --parent '54809'  '' : 2 (No such file or directory)
2016-05-09 10:58:04 54809 [ERROR] WSREP: Failed to prepare for 'xtrabackup-v2' SST. Unrecoverable.
2016-05-09 10:58:04 54809 [ERROR] Aborting
  socat 包没装上,可以把epel 的源加入就可以安装。
  yum install -y  socat
  因为在my.cnf里写错ip,导致出现下面错误,改正my.cnf就可以了
  wsrep_cluster_address=gcomm://192.168.2.130,192.168.3.128,192.168.0.129
wsrep_node_address=192.168.1.130     



2017-05-05 09:42:33 2902 [ERROR] WSREP: failed to open gcomm backend connection: 110: failed to reach primary view: 110 (Connection timed out)
at gcomm/src/pc.cpp:connect():162
2017-05-05 09:42:33 2902 [ERROR] WSREP: gcs/src/gcs_core.cpp:gcs_core_open():206: Failed to open backend connection: -110 (Connection timed out)
2017-05-05 09:42:33 2902 [ERROR] WSREP: gcs/src/gcs.cpp:gcs_open():1379: Failed to open channel 'pxc-dongzheng' at 'gcomm://192.168.2.130,192.168.3.128,192.168.0.129': -110 (Connection timed out)
2017-05-05 09:42:33 2902 [ERROR] WSREP: gcs connect failed: Connection timed out
2017-05-05 09:42:33 2902 [ERROR] WSREP: wsrep::connect(gcomm://192.168.2.130,192.168.3.128,192.168.0.129) failed: 7
2017-05-05 09:42:33 2902 [ERROR] Aborting

  关于PXC版本
  
如果是安装5.6.24版本或以上的需要下载openssl
  centos6和centos7需要openssl版本1.0
https://www.percona.com/doc/percona-server/5.6/installation.html#installing-percona-server-from-a-binary-tarball
In Percona Server 5.6.24-72.2 and newer, the single binary tarball was replaced with multiple tarballs depending on the OpenSSL library available in the distribution:
  ssl100 - for all Debian/Ubuntu versions except Debian Squeeze (libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f2e389a5000));
ssl098 - only for Debian Squeeze (libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x00007f9b30db6000));
ssl101 - for CentOS 6 and CentOS 7 (libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007facbe8c4000));
ssl098e - to be used only for CentOS 5 (libssl.so.6 => /lib64/libssl.so.6 (0x00002aed5b64d000)).
  下载地址
https://www.percona.com/downloads/Percona-XtraDB-Cluster-56/LATEST/binary/tarball/
DSC0006.jpg


  运维注意
  
(1)不能同时关闭所有节点,原则要保持Group里最少一个成员活着,否则全部传SST不能同时关闭所有节点,原则要保持Group里最少一个成员活着,否则全部传SST,gcache丢失
  (2)node1 是整个集群的老大
其它节点加进来发现数据不一致,以老大为准
会有丢数据风险
  (3)其中一个节点死掉了,还有2个节点
发现整个集群还能活,要设置忽略脑裂
忽略脑裂的命令
SET GLOBAL wsrep_provider_options="pc.ignore_sb=true;pc.ignore_quorum=true";
  (4)最好单节点写入,不然更新同一行记录会出问题
  (5)尽量用pt-online-schema-change 做表结构变更
  (6)mysql库全是MyISAM引擎不能复制
MyISAM引擎不能被复制,PXC只支持Innodb
DCL语句可以复制: create user, drop user, grant ,revoke
  
(7)整个集群节点数最好为3,最多是8个
  (8)pxc结构里面每个表必须有主键
  (9)writeSet的大小
下面两个参数控制写入集大小
wsrep_max_ws_rows 没有默认值,默认没有限制
wsrep_max_ws_size 默认单位字节,建议不要超过16KB,16000
my.cnf
wsrep_max_ws_rows=131072
wsrep_max_ws_size=16000
  允许最大的事务大小由wsrep_max_ws_rows和wsrep_max_ws_size定义,超过这个大小事务会被抛弃
LOAD DATA INFILE ...每1万行提交一次.对于LOAD DATA中的大事务会被分割成多个小事务来执行.
  参考文章:
http://www.cnblogs.com/zejin2008/p/5475285.html
https://www.percona.com/doc/percona-xtradb-cluster/5.6/wsrep-provider-index.html
https://www.percona.com/doc/percona-xtradb-cluster/5.6/wsrep-system-index.html
http://galeracluster.com/documentation-webpages/monitoringthecluster.html
  如有不对的地方,欢迎大家拍砖o(&cap;_&cap;)o
  本文版权归作者所有,未经作者同意不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-383372-1-1.html 上篇帖子: 【MySql】——MHA+GTID+failover+binlog-server+Atlas 下篇帖子: ansible 学习笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表