1 mysql介绍
MySQL是一个流行的开源关系型数据库管理系统(RDBMS),基于结构化查询语言(SQL)。最初由瑞典的MySQL AB公司开发,后来被Sun Microsystems收购,最终归属于甲骨文(Oracle)公司。MySQL是基于客户端-服务器模型的数据库服务器,广泛用于各种应用,特别是网站和网络应用。
作为世界上最受欢迎的开源关系型数据库之一,MySQL以其高性能、可靠性和易用性在各种行业和应用中得到了广泛应用。它的灵活性和开放性也使其成为数据库技术和云计算领域的重要组成部分。随着技术的不断发展,MySQL持续在性能优化、安全性和易用性方面进行创新,以满足不断变化的应用需求。
1.1 核心特性
-
开源和免费: MySQL是一个开源项目,提供社区版免费使用。它的源代码公开,允许用户查看、修改和扩展。
-
跨平台支持: MySQL可以在多种操作系统上运行,包括Linux、Windows、macOS等。
-
高性能: MySQL被设计为高效、可靠和快速,特别适合处理大量数据和高并发的应用。
-
易于使用: MySQL提供了直观的命令行界面和图形用户界面工具,如MySQL Workbench,使得数据库管理变得容易。
-
灵活的存储引擎: MySQL支持多种存储引擎,如InnoDB、MyISAM、Memory等,每种引擎都有自己的特点和优化场景。
-
安全性和可靠性: 提供了强大的数据保护机制,包括网络层加密、SSL/TLS支持、访问控制和审计功能。
1.2 架构和组件
-
客户端/服务器架构: MySQL采用客户端-服务器架构,客户端通过网络向服务器发送请求,服务器处理请求并返回结果。
-
SQL解析器和优化器: SQL解析器解析SQL查询,优化器选择最有效的查询执行计划。
-
存储引擎: 存储引擎负责数据的存储和检索。InnoDB是MySQL的默认事务型存储引擎,提供了崩溃恢复和ACID兼容事务。
-
缓冲池: 缓冲池用于缓存数据和索引,提高数据处理的性能。
-
日志系统: 包括错误日志、二进制日志和慢查询日志等,用于记录数据库操作和帮助故障恢复。
1.3 应用场景
-
网站和网络应用: MySQL是构建动态网站和网络应用的首选数据库。
-
企业应用: 在企业环境中,MySQL用于数据仓库、电子商务、内容管理和日志记录等。
-
嵌入式系统: 由于其小巧灵活的特点,MySQL也适用于嵌入式系统和轻量级应用。
-
云计算和大数据: 在云环境和大数据领域,MySQL可以与其他技术结合使用,如NoSQL数据库、Hadoop和数据分析工具。
1.4 性能优化
-
索引优化: 使用索引可以显著提高查询效率。合理设计和使用索引是优化MySQL性能的关键。
-
查询调优: 分析和优化SQL查询,避免不必要的数据扫描和复杂的连接。
-
硬件优化: 通过提升硬件性能,如增加内存、使用更快的磁盘,来提高数据库的处理能力。
-
配置调整: 调整MySQL的配置参数,如调整缓冲池大小和连接数,以适应具体的应用需求。
1.5 安全性和备份
-
访问控制: MySQL提供了基于角色的访问控制机制,管理员可以精确控制用户对数据库的访问。
-
数据加密: 支持数据加密,确保敏感数据的安全。
-
备份和恢复: 定期备份数据库是保障数据安全的重要措施。MySQL提供了多种备份解决方案,包括物理备份和逻辑备份。
1.6 社区和生态
-
活跃的社区: MySQL拥有一个庞大且活跃的用户社区,提供丰富的资源和支持。
-
丰富的生态系统: 许多第三方工具和服务与MySQL集成,如监控工具、性能分析工具和图形界面管理工具。
-
教育资源: 网络上有大量的MySQL教程、指南和最佳实践,帮助新手快速上手。
2 配置主从数据库同步
2.1 Master主服务器配置(192.168.1.3)
2.1.1 编辑my.cnf
命令查找文件位置:
find / -name my.cnf
vi /etc/mysql/my.cnf
在[mysqld]中添加:
server-id = 1
log_bin = master-bin
log_bin_index = master-bin.index
binlog_do_db = my_data
binlog_ignore_db = mysql
备注:server-id 服务器唯一标识,log_bin 启动MySQL二进制日志,binlog_do_db 指定记录二进制日志的数据库,binlog_ignore_db 指定不记录二进制日志的数据库。
2.1.2 登录主服务器MySQL创建从服务器用到的账户和权限:
grant replication slave on *.* to 'masterbackup' @'192.168.1.%' identified by 'masterbackup';
(192.168.1.%通配符,表示0-255的IP都可访问主服务器,正式环境请配置指定从服务器IP)
2.1.3 重启MySQL,命令:
/etc/init.d/mysql restart
2.1.4 登录MySQL状态下,查看主服务器状态:
show master status;
2.2 Slave从服务器配置(192.168.1.5)
2.2.1 编辑my.cnf
命令查找文件位置:
find / -name my.cnf
vi /etc/mysql/my.cnf
在[mysqld]中添加:
server-id = 2
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index
2.2.2 重启Slave从服务器MySQL,命令:
/etc/init.d/mysql restart
2.2.3 登录Slave从服务器,连接Master主服务器:
change master to master_host='192.168.1.103',master_port=3306,master_user='masterbackup',master_password='masterbackup',master_log_file='master-bin.000001',master_log_pos=2403;
备注:master_host对应主服务器的IP地址,master_port对应主服务器的端口,master_log_file对应show master status显示的File列:master-bin.000001,master_log_pos对应Position列:2403,否则有可能出现同步失败。
2.2.4 登录MySQL状态下,启动Slave数据同步。
start slave;
2.2.5 登录MySQL状态下,查看Slave信息:
show slave status\G;
备注:Slave_IO_Running和Slave_SQL_Running都为yes才表示同步成功。
2.2.6 登录MySQL状态下,停止同步命令:
stop slave;
2.3 历史数据同步
数据同步的方法很多:
(1)mysqldump -u root -p111 dbname > /home/dbname.sql 备份数据库
mysql>source /home/dbname.sql
(2)通过navicat同步数据进行同步