- 浏览: 243360 次
最新评论
环境简介
master(主):192.168.12.101
slave(从):192.168.12.105
主机基本配置:CentOS 6.5 64bit 8G内存 100G硬盘 4核CPU
一、安装软件
1、在两台linux主机上安装mysql,默认的安装位置是/var/lib/mysql
rpm -ivh MySQL-server-5.6.19-1.rhel5.x86_64.rpm
rpm -ivh MySQL-client-5.6.19-1.rhel5.x86_64.rpm
2、添加到自动启动
chkconfig --add mysql
3、启动服务
service mysql start
4、连接数据库并修改初始密码
cat /root/.mysql_secret --初始密码存放的位置
mysql -u root -p --使用初始密码登陆
set password=password('tina'); --修改密码
\q退出,使用新密码登陆
5、先关闭防火墙,以保证从库能正常连接
关闭防火墙:service iptables stop
二、 修改主服务器的配置文件/etc/my.cnf,开启BINLOG,并设置server-id的值,设置完成重启服务
log-bin = mysql-bin
server-id=100
binlog_format = "MIXED"
三、 修改从服务器的配置文件,其中server-id不能与主服务器一样,设置完成重启服务 service mysql restart
log-bin = mysql-bin
server-id=200
--其他重要参数可参考如下---
[mysqld]
port=3306
socket=/var/lib/mysql/mysqld.sock
character_set_server=utf8 ---设置字符集,在5.5之前的版本,参数名有所不同,需注意
log-bin=/var/lib/mysql/mysql-bin
log-error=/var/log/mysql/mysqlerr.log ---记录数据库的错误日志的
#log_slow_queries=on --默认路径/var/lib/mysql/localhost-slow.log --慢查询日志,有需要才会开启
sync_binlog =1
skip-external-locking
skip-name-resolve
symbolic-links=0
max_connections=500 --最大连接数
max_heap_table_size=128m (HEAP数据表的最大长度(默认设置是16M); 超过这个长度的HEAP数据表将被存入一个临时文件而不是驻留在内存里)
#for standby --标红的这一段需要添加到从库的配置文件中
#read-only=1
#log_slave_updates=1
#relay-log=/var/lib/mysql/mysql-relay-bin
#relay-log-index=/var/lib/mysql/mysql-relay-bin.index
#skip-slave-start=1
server_id=100
binlog_format=mixed
key_buffer_size = 512M --可用内存的25%-30% 控制索引可以使用的内存,越多越好
open_files_limit=30000
sort_buffer_size=10M --order by group by 分配的内存
read_buffer_size=20M --提高select 查询的速度
read_rnd_buffer_size = 512K
myisam_sort_buffer_size=64M
thread_cache_size=30
thread_concurrency=8
table_open_cache=1800
query_cache_limit=32M
query_cache_size=4M
#innodb_additional_mem_pool_size=4M
innodb_data_home_dir = /var/lib/mysql
innodb_data_file_path = ibdata1:500M:autoextend
innodb_log_group_home_dir = /var/lib/mysql
innodb_open_files = 2048
innodb_file_per_table = 1
innodb_buffer_pool_size = 5120M
innodb_log_file_size = 512M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
[mysqld_safe]
pid-file=/var/lib/mysql/mysqld.pid
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
确认字符集:
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
四、创建主库复制用户:
grant replication slave,replication client on *.* to repli@'192.168.12.105' identified by "repli"; ---从库也要进行同样的操作,方便日后进行切换
五、主库锁表:
flush tables with read lock;
六、数据的导出导入:
从主库导出:
[root@localhost ~]# mysqldump -uroot -p --all-databases --lock-all-tables>/tmp/all.sql
scp /tmp/all.sql root@192.168.12.105:/tmp
导入从库:
[root@localhost mysql]# mysql -u root -p </tmp/all.sql
七、配置主库连接信息:
主库操作:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000007 | 427 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.13 sec)
从库操作:
mysql> show slave status;
Empty set (0.00 sec)
mysql> change master to ---配置从库到主库的连接信息
master_host='192.168.10.197',
master_user='repli',
master_password='repli',
master_log_file='mysql-bin.000007', ---主库正在写的binlog日志文件
master_log_pos=427; ---主库正在写的binlog日志位置
八、创建备库复制用户:
grant replication slave,replication client on *.* to repli@'192.168.12.101' identified by "repli";
九、开始复制
主库操作:
mysql> unlock tables; ---解锁主库
Query OK, 0 rows affected (0.00 sec)
从库操作:
mysql> start slave; ---从库开启复制
Query OK, 0 rows affected (0.01 sec)
mysql> show slave status \G; ---查看从库状态
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.10.197
Master_User: repli
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000007
Read_Master_Log_Pos: 427
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000007
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
同步正常
十、检测是否正常复制
主库操作:
mysql> show slave hosts; --可以看到从库的主机信息
+-----------+------+------+-----------+--------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID |
+-----------+------+------+-----------+--------------------------------------+
| 200 | | 3306 | 100 | c954f3a2-21d0-11e4-a4b2-000c2981e58a |
+-----------+------+------+-----------+--------------------------------------+
1 row in set (0.00 sec)
mysql> select * from t1;
+--------+
| name |
+--------+
| liting |
| tina |
+--------+
2 rows in set (0.02 sec)
mysql> insert into t1 values ('haha'),('heihei');
Query OK, 2 rows affected (0.17 sec)
Records: 2 Duplicates: 0 Warnings: 0
从库操作:
mysql> select * from t1;
+--------+
| name |
+--------+
| liting |
| tina |
| haha |
| heihei |
+--------+
4 rows in set (0.00 sec)
主从搭建完成!
常用的与热备有关的mysql命令:
stop slave 停止同步
start slave 开始同步,从日志终止的位置开始更新
set sql_log_bin=0|1 主机端运行,需要super权限,用来开停日志,随意开停,会造成主机从机数据不一致,造成错误。
set global sql_slave_skip_counter=n 客户端运行,用来跳过几个事件,只有当同步进程出现错误而停止的时候才可以执行。
reset master 主机端运行,清除所有的日志
reset slave 从机运行,清除日志同步位置标志,并重新生成master.info 可能并不起用,最好重启mysql进程。
load table a from master 从主机端重读指定表的数据,每次只能读取一个,受timeout
时间限制,需要调整timeout时间,执行这个命令需要同步账号有reload和super权限,以及相应库的
select 权限,如果表比较大,要增加net_read_timeout和net_write_timeout的值
load data from master 从主机端重新读入所有的数据。
show master status 主机运行,看日志导出信息
show slave status 从机运行,查看从库状态
show slave hosts 主机运行,看连入的从机的情况
show master logs
purge master 将在一个指定的日期或日志名之前,删除主服务器上的二进制日志。这个命令用于用户希望确定仍然需要处理哪些文件的情况。
purge master logs to binary-log 或者 purge master logs before date
master(主):192.168.12.101
slave(从):192.168.12.105
主机基本配置:CentOS 6.5 64bit 8G内存 100G硬盘 4核CPU
一、安装软件
1、在两台linux主机上安装mysql,默认的安装位置是/var/lib/mysql
rpm -ivh MySQL-server-5.6.19-1.rhel5.x86_64.rpm
rpm -ivh MySQL-client-5.6.19-1.rhel5.x86_64.rpm
2、添加到自动启动
chkconfig --add mysql
3、启动服务
service mysql start
4、连接数据库并修改初始密码
cat /root/.mysql_secret --初始密码存放的位置
mysql -u root -p --使用初始密码登陆
set password=password('tina'); --修改密码
\q退出,使用新密码登陆
5、先关闭防火墙,以保证从库能正常连接
关闭防火墙:service iptables stop
二、 修改主服务器的配置文件/etc/my.cnf,开启BINLOG,并设置server-id的值,设置完成重启服务
log-bin = mysql-bin
server-id=100
binlog_format = "MIXED"
三、 修改从服务器的配置文件,其中server-id不能与主服务器一样,设置完成重启服务 service mysql restart
log-bin = mysql-bin
server-id=200
--其他重要参数可参考如下---
[mysqld]
port=3306
socket=/var/lib/mysql/mysqld.sock
character_set_server=utf8 ---设置字符集,在5.5之前的版本,参数名有所不同,需注意
log-bin=/var/lib/mysql/mysql-bin
log-error=/var/log/mysql/mysqlerr.log ---记录数据库的错误日志的
#log_slow_queries=on --默认路径/var/lib/mysql/localhost-slow.log --慢查询日志,有需要才会开启
sync_binlog =1
skip-external-locking
skip-name-resolve
symbolic-links=0
max_connections=500 --最大连接数
max_heap_table_size=128m (HEAP数据表的最大长度(默认设置是16M); 超过这个长度的HEAP数据表将被存入一个临时文件而不是驻留在内存里)
#for standby --标红的这一段需要添加到从库的配置文件中
#read-only=1
#log_slave_updates=1
#relay-log=/var/lib/mysql/mysql-relay-bin
#relay-log-index=/var/lib/mysql/mysql-relay-bin.index
#skip-slave-start=1
server_id=100
binlog_format=mixed
key_buffer_size = 512M --可用内存的25%-30% 控制索引可以使用的内存,越多越好
open_files_limit=30000
sort_buffer_size=10M --order by group by 分配的内存
read_buffer_size=20M --提高select 查询的速度
read_rnd_buffer_size = 512K
myisam_sort_buffer_size=64M
thread_cache_size=30
thread_concurrency=8
table_open_cache=1800
query_cache_limit=32M
query_cache_size=4M
#innodb_additional_mem_pool_size=4M
innodb_data_home_dir = /var/lib/mysql
innodb_data_file_path = ibdata1:500M:autoextend
innodb_log_group_home_dir = /var/lib/mysql
innodb_open_files = 2048
innodb_file_per_table = 1
innodb_buffer_pool_size = 5120M
innodb_log_file_size = 512M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
[mysqld_safe]
pid-file=/var/lib/mysql/mysqld.pid
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
确认字符集:
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
四、创建主库复制用户:
grant replication slave,replication client on *.* to repli@'192.168.12.105' identified by "repli"; ---从库也要进行同样的操作,方便日后进行切换
五、主库锁表:
flush tables with read lock;
六、数据的导出导入:
从主库导出:
[root@localhost ~]# mysqldump -uroot -p --all-databases --lock-all-tables>/tmp/all.sql
scp /tmp/all.sql root@192.168.12.105:/tmp
导入从库:
[root@localhost mysql]# mysql -u root -p </tmp/all.sql
七、配置主库连接信息:
主库操作:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000007 | 427 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.13 sec)
从库操作:
mysql> show slave status;
Empty set (0.00 sec)
mysql> change master to ---配置从库到主库的连接信息
master_host='192.168.10.197',
master_user='repli',
master_password='repli',
master_log_file='mysql-bin.000007', ---主库正在写的binlog日志文件
master_log_pos=427; ---主库正在写的binlog日志位置
八、创建备库复制用户:
grant replication slave,replication client on *.* to repli@'192.168.12.101' identified by "repli";
九、开始复制
主库操作:
mysql> unlock tables; ---解锁主库
Query OK, 0 rows affected (0.00 sec)
从库操作:
mysql> start slave; ---从库开启复制
Query OK, 0 rows affected (0.01 sec)
mysql> show slave status \G; ---查看从库状态
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.10.197
Master_User: repli
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000007
Read_Master_Log_Pos: 427
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000007
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
同步正常
十、检测是否正常复制
主库操作:
mysql> show slave hosts; --可以看到从库的主机信息
+-----------+------+------+-----------+--------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID |
+-----------+------+------+-----------+--------------------------------------+
| 200 | | 3306 | 100 | c954f3a2-21d0-11e4-a4b2-000c2981e58a |
+-----------+------+------+-----------+--------------------------------------+
1 row in set (0.00 sec)
mysql> select * from t1;
+--------+
| name |
+--------+
| liting |
| tina |
+--------+
2 rows in set (0.02 sec)
mysql> insert into t1 values ('haha'),('heihei');
Query OK, 2 rows affected (0.17 sec)
Records: 2 Duplicates: 0 Warnings: 0
从库操作:
mysql> select * from t1;
+--------+
| name |
+--------+
| liting |
| tina |
| haha |
| heihei |
+--------+
4 rows in set (0.00 sec)
主从搭建完成!
常用的与热备有关的mysql命令:
stop slave 停止同步
start slave 开始同步,从日志终止的位置开始更新
set sql_log_bin=0|1 主机端运行,需要super权限,用来开停日志,随意开停,会造成主机从机数据不一致,造成错误。
set global sql_slave_skip_counter=n 客户端运行,用来跳过几个事件,只有当同步进程出现错误而停止的时候才可以执行。
reset master 主机端运行,清除所有的日志
reset slave 从机运行,清除日志同步位置标志,并重新生成master.info 可能并不起用,最好重启mysql进程。
load table a from master 从主机端重读指定表的数据,每次只能读取一个,受timeout
时间限制,需要调整timeout时间,执行这个命令需要同步账号有reload和super权限,以及相应库的
select 权限,如果表比较大,要增加net_read_timeout和net_write_timeout的值
load data from master 从主机端重新读入所有的数据。
show master status 主机运行,看日志导出信息
show slave status 从机运行,查看从库状态
show slave hosts 主机运行,看连入的从机的情况
show master logs
purge master 将在一个指定的日期或日志名之前,删除主服务器上的二进制日志。这个命令用于用户希望确定仍然需要处理哪些文件的情况。
purge master logs to binary-log 或者 purge master logs before date
发表评论
-
mysql设置外键约束on delete cascade on update cascade
2016-12-09 16:27 3733mysql设置外键约束on delet ... -
mysql权限管理(实例)
2016-05-10 17:21 1514mysql权限管理实例 本文并没有很详细的介绍对具体的对象授 ... -
mysql简单的碎片清理脚本
2016-05-10 16:52 1496mysql简单的碎片清理脚本 #!/bin/bash date ... -
mysql qpress压缩备份恢复
2016-05-03 16:30 6963说明: 1.前面博客已经介绍过gzip压缩方法,备份正常,但后 ... -
mysql xtrabackup在线搭建主从
2016-04-11 14:59 1951使用xtrabackup进行在线的主从搭建: [root@m ... -
mysql xtrabackup在线备份还原(全备+增备)
2016-04-11 14:47 1053工具安装: [root@mysqlserver var]# t ... -
mysql主库清理数据,从库保留
2016-04-01 15:26 1298因为业务需要,想在mysql主库清理一些数据,但从库想要保留, ... -
oracle,postgresql,mysql一些使用上的区别记录
2015-12-16 11:38 01.限制行数: select * from ta where ... -
数据库调优分享-mysql
2015-12-16 10:02 951数据库调优分享------参考一本mysql资料书 日常的困 ... -
mysql 安装-tina
2015-12-08 17:32 0mysql安装-tina 1、准备安装程序(http://ww ... -
mysqldump 只导入数据或只导结构
2015-12-22 10:36 2719[size=small]mysqldump只导出数据或只导出表 ... -
mysql server has gone away
2015-12-10 09:26 877mysql server has gone away,他的意思 ... -
mysql optimize 清理碎片
2015-12-09 09:26 1206---定期清理脚本 0 1 * * 4 root /root ... -
mysql binlog
2015-12-10 09:26 1346mysqld在每个二进制日志 ... -
mysql远程连接设置
2015-12-10 09:25 1008远程连接mysql数据库: 连接上以后,通过这台跳转服务器远 ... -
Last_SQL_Error: Error 'Duplicate entry '1' for key 'PRIMARY''
2015-12-10 09:25 1720[size=small]-实际遇到的问题: Last_SQL ... -
[ERROR] Slave I/O: error connecting to master
2015-12-09 09:26 8212刚配置的MySQL主从,在从机上看到 点击(此处)折叠或打开 ... -
MySQL常用函数
2015-02-05 10:34 537一、字符串类 1、left(str, length) 从左开始 ... -
MySQL触发器简介
2015-02-05 10:33 899一、触发器基本语法 CREATE TRIGGER trigge ... -
MySQL主从切换
2015-02-05 10:32 505环境: 原主库:192.168.10.197 ---新 ...
相关推荐
MySQL 主从搭建详解 MySQL 主从搭建是一种常见的数据库架构模式,它可以提高数据库的读取性能和可用性。下面对 MySQL 主从搭建的知识点进行详细的讲解。 环境准备 在开始搭建 MySQL 主从架构之前,需要准备两台...
MySQL主从搭建(一主一从)从库my.ini
MySQL主从架构是一种常见的数据库高...以上就是MySQL主从搭建及运维相关命令的详细解析,这些步骤和命令对于构建和维护一个稳定的MySQL主从复制环境至关重要。注意在实际操作中根据实际情况调整配置,并确保数据安全。
mysql主从搭建过程
mysql主从搭建-pxb全备
Mysql主从搭建.docx#资源达人分享计划#
这里提到的“MySQL主从复制搭建 需要用到的脚本”包含了搭建过程中的一些关键配置文件和自动化管理脚本。 1. `app1.cnf`:这是一个配置文件,通常包含MySQL服务器的特定设置,例如服务器ID、连接信息(如主机名、...
MySQL主从搭建(一主一从)主库my.ini
mysql主从配置文档。请自行修改自己对应的ip
自己手动配置Mysql主从服务器的步骤及方法的记录笔记。 https://www.tanshuyi.top/web/blog?id=36
### MySQL主从复制搭建知识点详解 #### 一、MySQL主从复制概述 MySQL主从复制是一种数据同步机制,它能够将一个MySQL服务器(主服务器)的数据自动同步到一个或多个MySQL服务器(从服务器)。这种机制不仅可以提高...
这个"主从MySQL搭建实践.rar"压缩包文件显然包含了详细的步骤和可能遇到的问题,以及Redis的搭建和启动脚本,这对于理解MySQL主从复制和Redis的基础操作非常有帮助。 MySQL主从复制的核心原理是,当数据在主服务器...
### MySQL主从配置知识点详解 #### 一、主服务器配置 **1.1 创建复制用户** - **目的**: 为了确保从服务器能够连接到主服务器并获取数据更新。 - **命令**: ```sql mysql> GRANT REPLICATION SLAVE ON *.* TO '...
MySQL 主从复制环境搭建 MySQL 是一个轻量级的开源框架,具有速度快、多线程、多用户和跨平台等特点。MySQL 主从复制是指将一个 MySQL 服务器的数据实时同步到另一个 MySQL 服务器上,通常用于提高数据安全、负载...
Linux下MySQL主从服务器的搭建详细实例完整版,欢迎大家来踩 Linux下MySQL主从服务器的搭建详细实例完整版,欢迎大家来踩 Linux下MySQL主从服务器的搭建详细实例完整版,欢迎大家来踩
本篇文章将详细探讨MySQL主从数据搭建过程中的问题处理,以及相关源码和工具的应用。 MySQL主从复制是指在一个MySQL集群中,主服务器(Master)处理所有写操作,而从服务器(Slave)则同步主服务器上的数据变更,...
### MySQL 主从库配置详解 ...通过以上步骤,我们可以成功搭建起 MySQL 的主从库结构,实现了数据的自动同步。这种架构不仅可以提高数据的安全性,还可以通过合理规划负载均衡策略,提升整体系统的性能。