0

0

MariaDB10.0实例部署和多源复制配置

php中文网

php中文网

发布时间:2016-06-07 14:55:56

|

1806人浏览过

|

来源于php中文网

原创

MariaDB10.0 实例部署和多源复制配置 一、部署 MariaDB10.0.17 1 、 MariaDB 下载和简单说明 当前 MariaDB 支持多源复制的版本为 10.0 的版本,最新稳定版本为 10.0.17 ,下载连接为: http://mirrors.opencas.cn/mariadb/mariadb-10.0.17/source/mariadb-10

MariaDB10.0实例部署和多源复制配置

一、部署MariaDB10.0.17

1MariaDB下载和简单说明

当前MariaDB支持多源复制的版本为10.0的版本,最新稳定版本为10.0.17,下载连接为:http://mirrors.opencas.cn/mariadb/mariadb-10.0.17/source/mariadb-10.0.17.tar.gzMariaDBPerconaDB5.5的新版中引进来线程池和关闭NUMA的概念,对数据库性能提高不少,而MySQL的版本在5.5.23(貌似是)以上的版本中也有这个概念,但是是属于企业版的功能,开源版本中没有这个功能;MariaDB10的版本中多了一个新功能就是多源复制,对于一些特殊的场景比较实用:如sharding过的表做数据汇总等,一般对汇总统计比较有用。

注:新的版本固然有很多吸引人的地方,但是其中的坑还没有挖完,有问题的话不易查找材料,不易于解决,所以不建议生产环境使用最新的版本。目前MySQLPerconaDBMariaDB主流版本是5.5,如果非特殊需要,5.5的足够用,抛开线程池来说,5.6的版本在整体的性能上未必比5.5的好。

2MariaDB的安装部署

MariaDBMySQLPercona的基本上完全一样,5.5以后的版本采用cmake的方式编译安装:

#tar –zxfmariadb-10.0.17.tar.gz

#cdmariadb-10.0.17

#cmake .-DCMAKE_INSTALL_PREFIX=/data/percona/ -DMYSQL_DATADIR=/data/percona/data-DSYSCONFDIR=/data/percona/etc -DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci-DMYSQL_UNIX_ADDR=/data/percona/tmp/mysql.sock -DENABLED_LOCAL_INFILE=ON-DENABLED_PROFILING=ON -DWITH_DEBUG=0 -DMYSQL_TCP_PORT=3306

#make&& make install

3MariaDB的配置文件

这个配置文件适用于PerconaDB,去掉线程池和NAMA的参数,同样适用于MySQL

[client]

port            = 3306

socket          = /data/mariadb/tmp/mysql.sock

default-character-set= utf8

 

[mysqld]

port         = 3306

bind-address= 0.0.0.0

lower_case_table_names  = 1

basedir  = /data/mariadb

datadir  = /data/mariadb/data

tmpdir  = /data/mariadb/tmp

socket  = /data/mariadb/tmp/mysql.sock

#######################################

log-output              = FILE

log-error               = /data/mariadb/log/error.log

#general_log

general_log_file        = /data/mariadb/log/mysql.log

pid-file                = /data/mariadb/data/mysql.pid

slow-query-log

slow_query_log_file     = /data/mariadb/log/slow.log

tmpdir                  = /data/mariadb/tmp/

long_query_time         = 0.1

#max_statement_time    = 1000 #自动杀死超过1s的慢sqlPerconaDB5.6支持,不建议使用,如使用的和业务方沟通好,建议在特殊的情况动态配置使用,默认是0,不限制。

sync_binlog             = 1

 

skip-external-locking

skip-name-resolve

default-storage-engine= INNODB

character-set-server= utf8

wait_timeout= 28400

back_log  =  1024

 

#########################

thread_concurrency      = 16

thread_cache_size       = 512

table_open_cache        = 16384

table_definition_cache  = 16384

sort_buffer_size        = 2M

join_buffer_size        = 2M

read_buffer_size        = 4M

read_rnd_buffer_size    = 4M

key_buffer_size         = 64M

myisam_sort_buffer_size= 64M

tmp_table_size          = 256M

max_heap_table_size     = 256M

open_files_limit        = 65535

 

#####Network ######################

max_allowed_packet      = 16M

interactive_timeout     = 28400

wait_timeout            = 28400

max-connections         = 1000

max_user_connections    = 0

max_connect_errors      = 100

 

######Repl #####################

server-id               = 1

report-host             = 172.16.183.56

log-bin                 = mysql-bin

binlog_format           = mixed

expire_logs_days        = 7

relay-log               = relay-log

#replicate-wild-do-table= zabbix.%

#replicate-wild-do-table= zabbix_server.%

replicate_wild_ignore_table=mysql.%

replicate_wild_ignore_table=test.%

log_slave_updates

skip-slave-start

#slave-net-timeout                    = 10

#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

relay_log_recovery                   = 1

 

#####  Innodb ###########

innodb_data_home_dir            = /data/mariadb/data

innodb_data_file_path           = ibdata1:2G;ibdata2:2G:autoextend

innodb_autoextend_increment     = 500

innodb_log_group_home_dir       = /data/mariadb/data

innodb_buffer_pool_size         = 8G

innodb_buffer_pool_dump_at_shutdown= 1

innodb_buffer_pool_load_at_startup= 1

innodb_buffer_pool_instances    = 8

innodb_additional_mem_pool_size= 128M

innodb_log_files_in_group       = 3

innodb_log_file_size            = 512M

innodb_log_buffer_size          = 8M

innodb_flush_log_at_trx_commit  = 1

innodb_lock_wait_timeout        = 120

innodb_flush_method             = O_DIRECT

innodb_max_dirty_pages_pct      = 75

innodb_io_capacity              = 1000

innodb_thread_concurrency       = 0

innodb_thread_sleep_delay       = 500

innodb_concurrency_tickets      = 1000

innodb_open_files               = 65535

innodb_file_per_table           = 1

#########线程池,在高并发高负载情况下表现出出色的数据库性能  ##

thread_handling                 = pool-of-threads

 

######NUMA #########################

innodb_buffer_pool_populate     = 1

 

##################################

[mysqldump]

quick

max_allowed_packet= 16M

 

[mysql]

no-auto-rehash

default-character-set=utf8

 prompt = "MySQL \u@[\d]>"


[myisamchk]

key_buffer_size= 256M

sort_buffer_size= 256M

read_buffer= 2M

write_buffer= 2M

 

[mysqld_safe]

######CLOSED NUMA ###########

flush_caches

numa_interleave

 

[mysqlhotcopy]

interactive_timeout     = 28400

4、数据库初始化和启动

数据库初始化和启动脚本如下:

#/data/mariadb/scripts/mysql_install_db--basedir=/data/mariadb --datadir=/data/mariadb/data --defaults-file=/data/mariadb/etc/my.cnf--user=mysql

#/data/mariadb/bin/mysqld_safe--defaults-file=/data/mariadb/etc/my.cnf --user=mysql &

#echo “/data/mariadb/bin/mysqld_safe--defaults-file=/data/mariadb/etc/my.cnf --user=mysql &”>>/etc/rc.local  #加入到系统启动项中

二、MariaDB多源复制相关配置

1、初始化数据库用户

初始化多源从库的用户,建议删除初始所有用户,建立4个用户:DBA root账户,备份用户,监控用户,主从同步用户。

创建用户的相关权限和命令如下:

#创建用户

GRANT ALLPRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY IDENTIFIED BY '123456'WITH GRANT OPTION;

GRANTREPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replicater'@'192.168.2.100'IDENTIFIED BY '123456';

GRANTSELECT, RELOAD, SHOW DATABASES, SUPER, LOCK TABLES, REPLICATION CLIENT, SHOWVIEW, EVENT ON *.* TO 'backup'@'localhost' IDENTIFIED BY '123456';

GRANTSELECT, PROCESS, SUPER, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO'monitor'@'127.0.0.1' IDENTIFIED BY '123456';

#删除用户建议使用dropuser xxxx@xxxxx;这样删除比较彻底。

作为DBA,线上的任何写操作最好做好备份,给自己留个后路

2、备份多个主库的数据库

MariaDB的多源复制,要求各个同步主库中的数据库名字各不相同,备份的话只备份需要同步的数据库即可,不需要同步的数据库可以在多源的从库中使用参数过滤掉,默认不会同步information_schemaperformance_schema

备份命令如下:

/data/mariadb/bin/mysqldump--default-character-set=utf8 --hex-blob -R --log-error=/var/log/backup-log--single-transaction --master-data=2 -uxxxx -pxxxx –B db_name > db_name_20150320.sql &

#放入后台备份

3、导入备份数据

分别导入各个主库的备份数据导多源的从库中,命令如下:

/data/mariadb/bin/mysql–uxxxx –pxxxxx db_name

4、建立主从关系

这里重点在connection_name,也就是在以前的语法上增加了connection_name,如果没加connection_name,那么默认的就是空。connection_name为标识,主要是方便用于管理单个主从关系。建立主从关系的命令如下:

Mysql>changemaster 'percona' to master_host='192.168.2.100',MASTER_PORT=3307,master_user='repl', master_password='xxxxxxx',master_log_file='mysql-bin.000019', master_log_pos=120;

其中的perconaconnection_name。每个源的同步一个connection_name,分别执行上述sql命令。

启动主从同步的命令为:

Mysql>START SLAVE 'percona';

也可以在建立全部的同步关系后一起启动:

Mysql>START ALL SLAVES;

停止单个同步的命令:

Mysql>STOP SLAVE 'percona';

停止全部的同步的命令为:

Mysql>STOP ALL SLAVES;

当同步建立并正常运行时,会产生relay-logrelay-log的名字为:relay-log-percona.000001,会自动的加上connection_name

可以使用show all slaves status来查看所有的同步状态,状态信息如下:

MariaDB[(none)]> show all slaves status\G

***************************1. row ***************************

              Connection_name: percona

              Slave_SQL_State: Slave has readall relay log; waiting for the slave I/O thread to update it

               Slave_IO_State: Waiting formaster to send event

                  Master_Host: 192.168.2.200

                  Master_User: repl

                  Master_Port: 3307

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000021

          Read_Master_Log_Pos: 450752689

               Relay_Log_File:relay-log-percona.000011

                Relay_Log_Pos: 135537605

        Relay_Master_Log_File: mysql-bin.000021

             Slave_IO_Running: Yes

           Slave_SQL_Running: Yes

              Replicate_Do_DB:

          Replicate_Ignore_DB:

           Replicate_Do_Table:

       Replicate_Ignore_Table:

      Replicate_Wild_Do_Table:

  Replicate_Wild_Ignore_Table: mysql.%,test.%

                   Last_Errno: 0

                   Last_Error:

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 450752689

              Relay_Log_Space: 135537904

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

             Master_Server_Id: 111156

              Master_SSL_Crl:

           Master_SSL_Crlpath:

                   Using_Gtid: No

                  Gtid_IO_Pos:

         Retried_transactions: 0

           Max_relay_log_size: 1073741824

         Executed_log_entries: 106216

    Slave_received_heartbeats: 12

       Slave_heartbeat_period: 1800.000

               Gtid_Slave_Pos:

***************************2. row ***************************

              Connection_name: percona

              Slave_SQL_State: Slave has readall relay log; waiting for the slave I/O thread to update it

               Slave_IO_State: Waiting formaster to send event

                  Master_Host: 192.168.2.201

                  Master_User: repl

                  Master_Port: 3307

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000021

          Read_Master_Log_Pos: 450752689

               Relay_Log_File:relay-log-percona.000011

                Relay_Log_Pos: 135537605

        Relay_Master_Log_File: mysql-bin.000021

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB:

          Replicate_Ignore_DB:

           Replicate_Do_Table:

       Replicate_Ignore_Table:

      Replicate_Wild_Do_Table:

  Replicate_Wild_Ignore_Table: mysql.%,test.%

                   Last_Errno: 0

                   Last_Error:

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 450752689

              Relay_Log_Space: 135537904

 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

             Master_Server_Id: 111156

               Master_SSL_Crl:

           Master_SSL_Crlp

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

2

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

56

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

30

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

59

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

25

2026.03.03

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

79

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

61

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

50

2026.02.28

Golang 并发编程模型与工程实践:从语言特性到系统性能
Golang 并发编程模型与工程实践:从语言特性到系统性能

本专题系统讲解 Golang 并发编程模型,从语言级特性出发,深入理解 goroutine、channel 与调度机制。结合工程实践,分析并发设计模式、性能瓶颈与资源控制策略,帮助将并发能力有效转化为稳定、可扩展的系统性能优势。

47

2026.02.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 12.7万人学习

CSS3 教程
CSS3 教程

共18课时 | 6.6万人学习

Rust 教程
Rust 教程

共28课时 | 6.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号