PXC安装文档


一 环境准备【PXC的数据同步流程】
client端向server端发送dml更新操作请求时,server的native本地进程处理请求,并返回OK准备接收,client发送commit更新事务给server,server将replicate writeset复制写数据集发给group(cluster集群),cluster将该数据集对应产生的唯一的GTID(global transaction ID)发送给集群每个server(节点)。当前server节点验证通过后,执行commit_cd动作更新本地数据库,并返回OK;若其他节点验证不通过,则执行rollback_cd,回滚刚提交的事务。其他server(other server)接收并验证通过后,执行apply_cd和commit_cd动作更新本地数据库;若验证不通过,则丢弃该数据集。任意节点收到sql请求,对于dml更新操作事务,在commit之前,由wsrep API调用galera库进行集群内部广播,验证当前事务是否能在所有节点中执行,验证通过后该事务真正提交到集群所有节点执行,反之roll back回滚。【节点加入后状态转变过程】
二 下载PXC安装yum源yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
这样会在/etc/yum.repos.d下生成percona-release.repo文件先下载安装两个PXC的依赖包
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/Packages/l/libev-4.03-3.el6.x86_64.rpm
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/Packages/s/socat-1.7.2.3-1.el6.x86_64.rpm
yum localinstall libev-4.03-3.el6.x86_64
yum localinstall socat-1.7.2.3-1.el6.x86_64安装PXCyum install Percona-XtraDB-Cluster-57最终下载下来的版本是Percona-XtraDB-Cluster-57-5.7.21注意:三个节点上均要安装。三 配置文件node1节点配置:
[mysql]
prompt=”u@h:p [d]>
#pager=”less -i -n -S”
#tee=/home/mysql/query.log
no-auto-rehash[mysqld]
user = mysql
datadir = /data/mysql/mysql9999/dataevent_scheduler = 0tmpdir=/data/mysql/mysql9999/tmp
#timeout
interactive_timeout = 300
wait_timeout = 300#character set
character-set-server = utf8open_files_limit = 65535
max_connections = 100
max_connect_errors = 100000explicit_defaults_for_timestamp
#logs
log-output=file
slow_query_log = 1
slow_query_log_file = slow.log
log-error = error.log
log_warnings = 2
pid-file = mysql.pid
long_query_time = 1
#log-slow-admin-statements = 1
#log-queries-not-using-indexes = 1
log-slow-slave-statements = 1#binlog
binlog_format = row
server-id = 63306
log-bin = /data/mysql/mysql9999/logs/mysql-bin
binlog_cache_size = 1M
max_binlog_size = 200M
max_binlog_cache_size = 2G
sync_binlog = 0
expire_logs_days = 10#relay log
skip_slave_start = 1
max_relay_log_size = 500M
relay_log_purge = 1
relay_log_recovery = 1
log_slave_updates
#slave-skip-errors=1032,1053,1062#buffers & cache
table_open_cache = 2048
table_definition_cache = 2048
table_open_cache = 2048
max_heap_table_size = 96M
sort_buffer_size = 2M
join_buffer_size = 2M
thread_cache_size = 256
query_cache_size = 0
query_cache_type = 0
query_cache_limit = 256K
query_cache_min_res_unit = 512
thread_stack = 192K
tmp_table_size = 96M
key_buffer_size = 8M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 32M#myisam
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1#innodb
innodb_buffer_pool_size = 500M
innodb_buffer_pool_instances = 1
innodb_data_file_path = ibdata1:200M:autoextend
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 64M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_file_per_table = 1
innodb_rollback_on_timeout
innodb_status_file = 1
innodb_io_capacity = 2000
transaction_isolation = READ-COMMITTED
innodb_flush_method = O_DIRECT#pxc
default_storage_engine=Innodb
innodb_locks_unsafe_for_binlog=1
innodb_autoinc_lock_mode=2wsrep_cluster_name=pxc_lixingzhou
wsrep_cluster_address=gcomm://192.168.39.226,192.168.39.227,192.168.39.135
wsrep_node_address=192.168.39.226
wsrep_provider=/usr/lib64/libgalera_smm.sowsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sst:lixingzhou启动服务:
/etc/init.d/mysql bootstrap-pxc 【bootstrap-pxc启动】用默认errorlog里面生成的默认密码登陆后,修改默认生成的root账户密码,否则做不了任何操作。
ALTER USER CURRENT_USER() IDENTIFIED BY ‘123456’;
该参数是用于其它节点加入到该集群中,利用XtraBackup执行State Snapshot Transfer(类似于全量同步)的。
配置文件中的下边两个参数相关
wsrep_sst_method=xtrabackup-v2
wsr开发云主机域名ep_sst_auth=sst:lixingzhouCREATE USER ‘sst’@’localhost’ IDENTIFIED BY ‘lixingzhou’;
GRANT ALL ON . TO ‘sst’@’localhost’;
FLUSH PRIVILEGES;node2,node3 的配置文件和node1基本一致,下边标出需要修改的地方:
server-id = xxxx
wsrep_node_address= xxxx#配置完之后 启动node2 node3
/etc/init.d/mysql start查看状态:四 注意事项1 selinux和火墙关闭
2 pxc 的局限,不支持表级锁(lock table/unlock table 不支持),执行alter table操作会锁住整个集群。可以支持并发写入,通过自增偏移量和自增步长来控制,实现并发写入不冲突。但是update/delete 在网络抖动的情况下,会重新发送给集群的其他成员,存在各个成员都会本地native process 处理这个SQL, 然后发给集群 其他节点,结果发现推过来的集合和我本地修改的集合内容一样,可能会报1213 错误,导致事务ID不一 致。会使节点下线处理。所以尽量单节点写入。主要用它的数据一致性。
3 整个集群数最好为3个【官方推荐3个】,最多是8个。如果多了,节点之间的认证,传输,就会量很大,影响性能。
4 writeSet最大不要超过16K
5 不支持XA事务
6 pxc结构里面必须有主键,否则当数据很稀疏的时候,data page里面存储的数据可能会有差别。
例如:select * from t1 limit 10; 可能返回的结果会不一样。7 node能停多长时间,可以传IST,由gcache控制,到底分配多大合适呢?
wsrep_provider_options=”gcache.size=1G”,可以算一个小时的binlog量大概多大,2-3个小时,2-4G即可。
如果机器关闭,缓存就会清空。8假设我们三个节点都关闭了,会发起什么呢?
没有做到最后关闭的节点,最先启动,发现GTID不一样。就会全部传SST。
建议滚动关闭,node1 先闭,修复完毕加回来了,原则要保持Group里最少一个成员活着。数据库关闭之后,最会保存一个last Txid。
9 集群的脑裂问题?
发生脑裂后,拒绝对外服务, 输入任何命令都会,unkown command。
火墙设置:iptables 禁止访问 4567 端口两个连不通了。[模拟故障]
忽略上边的脑裂设置:SET GLOBAL wsrep_provider_options=”pc.ignore_sb=true”;

相关推荐: MySQL的两种存储引擎MyISAM和InnoDB相关介绍

下面讲讲关于MySQL的两种存储引擎MyISAM和InnoDB,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL的两种存储引擎MyISAM和InnoDB这篇文章你一定会有所受益。 MyISAM是MySQL的默认存储引擎,基于…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/10 20:17
下一篇 06/10 20:17

相关推荐