我有4个实例数据库集群(其中2个是mariadb 10.2服务器,其中2个是garbd服务器)我们在数据库中使用大量更新查询,处理一个巨大的表,其中一些表具有超过2000万条记录。另外,我们有很多使用数据库的Java应用程序,这些线程通常在表中进行“更新”过程。在peak_time中,我们使用大约200个线程。
我们的问题是我们的应用程序中有“死锁”。我相信我可以通过对数据库配置进行一些性能调整来弄清楚。我的最后一个配置如下;
DB1:x.x.x.x
DB2:y.y.y.y
Garbd-1:w.w.w.w
Garbd-2:z.z.z.z
DB-1:my.cnf
[client-server]
socket=/app/mysql/mysql.sock
port=3306
[mysqld]
user=mysql
port=3306
bind-address=0.0.0.0
socket=/app/mysql/mysql.sock
skip-name-resolve
lower_case_table_names=1
server-id=1
event-scheduler=ON
datadir=/app/mysql
pid-file=/app/mysql/db1.pid
log-error=/app/mysql/db1.err
log_bin_trust_function_creators=1
query_cache_type=0
query_cache_size=0
#query_cache_limit = 4M
default_table_type = InnoDB
table_open_cache = 4096
open_files_limit = 8192
max_connections = 800
wait_timeout=100
interactive_timeout=100
#net_read_timeout=3600
#net_write_timeout=3600
max_heap_table_size=64M
tmp_table_size=64M
thread_cache_size=256
sort_buffer_size = 2M
join_buffer_size = 256K
read_buffer_size=128K
read_rnd_buffer_size = 256M
transaction-isolation=READ-COMMITTED
log_warnings
slow_query_log
long_query_time=5
# Physical RAM is 32G (8-core)
innodb_buffer_pool_size =24G
innodb_buffer_pool_instances=6
key_buffer_size=512M
nnodb_write_io_threads=8
innodb_read_io_threads=8
innodb_thread_concurrency = 16
#innodb_data_file_path = ibdata1:1G:autoextend
#innodb_autoextend_increment=128M
#innodb_file_per_table
innodb_flush_log_at_trx_commit=2
#sync_binlog=1
innodb_log_buffer_size = 16M
innodb_log_file_size = 2G
innodb_max_dirty_pages_pct = 80
innodb_flush_method=O_DIRECT
innodb_lock_wait_timeout = 120
binlog_format=ROW
innodb_autoinc_lock_mode=2
[mysqldump]
quick
max_allowed_packet = 512M
[mysql]
no-auto-rehash
[mysqld_safe]
datadir=/app/mysql
pid-file=/app/mysql/db1.pid
log-error=/app/mysql/db1.err
[mariadb-10.2]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_provider_options="gcache.size=10G;gmcast.listen_addr=tcp://0.0.0.0:4567;socket.checksum=2"
wsrep_cluster_address="gcomm://10.92.221.215,10.92.221.216,10.92.223.215,10.92.223.216"
wsrep_cluster_name='galera_cluster'
wsrep_node_address='10.92.221.215'
wsrep_node_name='ivrocsdbp00'
wsrep_sst_method=rsync
wsrep_sst_auth=sst_user:dbpass
这些也在第二台服务器中配置,服务器ID = 2,并且db2.pid和db2.err也进行了更改。
这些更改是否可以解决我的问题?
我想知道这些参数配置正确吗?
我们在服务器中有32 GB RAM(8核)。
感谢您的帮助。
我猜测nnodb_write_io_threads
是一个错字,因为mysqld不会以它开头。