mysql主从复制
来源:互联网 发布:php彩票网站系统 编辑:程序博客网 时间:2024/04/23 22:51
- mysql主从复制
- 1 mysql的安装
- 2 mysql的数据同步
- 21相关准备
- 22主库配置
- 23从库配置
- 24主库与从库的同步
- 25主从复制的常见问题
1. mysql主从复制
1.1 mysql的安装
1.yum remove mysql-libs(中间过程会出现提示,输入y回车即可)
shell> yum remove mysql-libs
2.安装mysql(以下的mysql-VERSION-OS代表mysql的文件名, /path/to/代表mysql文件的路径),在terminal终端中键入下列命令
shell> groupadd mysqlshell> useradd -r -g mysql mysqlshell> cd /usr/localshell> tar zxvf /path/to/mysql-VERSION-OS.tar.gzshell> ln -s full-path-to-mysql-VERSION-OS mysqlshell> cd mysqlshell> chown -R mysql .shell> chgrp -R mysql .shell> scripts/mysql_install_db --user=mysqlshell> chown -R root .shell> chown -R mysql data
3.在开启mysql服务之前删除文件夹下面的my.cnf,打开new.cnf,修改里面的socket为3306,修改new.cnf的文件名为my.cnf:
port = 3306socket = /tmp/mysql.sock
4.在终端中输入下列命令
shell> bin/mysqld_safe --user=mysql &
5.ps -ef | grep mysqld查看是否开始启动mysql客户端
shell> ps -ef | grep mysqld
6.在终端中输入下列命令
Shell> bin/mysql -uroot
进入mysql客户端输入下列命令进行mysql的root密码以及远程连接权限的修改(注意每条命令后都需要添加’;’)
mysql> use mysql;mysql> UPDATE user SET Password = PASSWORD('root') WHERE user = 'root';mysql> FLUSH PRIVILEGES;mysql> update user set host = '%' where host ='localhost';mysql> flush privileges;mysql> grant ALL PRIVILEGES ON *.* to root@"%" identified by "mysql" WITH GRANT OPTION;
7.关闭防火墙(也可通过命令打开指定端口,这里没有给出,因为后面需打开多个端口),在以下命令终端中输入
shell> service iptables stop
1.2 mysql的数据同步
1.2.1相关准备
主库(master): ip为192.168.1.10 port为3306
从库(slave): ip为192.168.1.11 port为3306
分别按照1.1的步骤在两台机器上安装如上配置的mysql
1.2.2.主库配置
my.cnf
[mysqld]log-bin=mysql-bin #打开日志(主机需要打开)server-id=1 #mysql的唯一标识port = 3306 #端口号socket = /tmp/mysql.sock #sock地址sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
1.2.3.从库配置
my.cnf
[mysqld]log_bin=mysql-binserver-id=2socket = /tmp/mysql.socksql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
提示:
在修改完成之后重新启动mysql使配置文件生效。
1.2.4.主库与从库的同步
1.主库锁表只读
mysql>flush tables with read lock;
2.查看主库状态,并记录
mysql>show master status;
3.导出主库数据
shell> mkdir /opt/backup/ -pshell> mysqldump -uroot -p -S /tmp/mysql.sock -A -B | gzip > /opt/backup/mysql_bak.$(date +%F).sql.gz
note:注意,-A表示备份所有库, -B表示增加user DB和drop等参数(导库时会直接覆盖所有的)。
4.把主库备份的mysql数据迁移到从库
shell> scp /opt/backup/mysql_bak.2016-03-29.sql.gz root@192.168.1.11:/opt/backup/
在从库所在的系统上
shell> cd /server/backup/ && ls -lshell> gzip -d mysql_bak.2016-03-29.sqlshell> mysql -uroot -p"123123" < mysql_bak.2012-05-22.sql
5.设置从属关系
登陆主库并设置数据同步的用户名和密码
shell> mysql -uroot -pmysql> select user(); 查看用户mysql> grant replication slave on *.* to 'rep'@'192.168.1.%' identified by "123456"; 建立用于库复制的账号rep#replication slave为mysql同步的必须权限,此处不要授权all#*.*表示所有库所有表,库也是可以指定具体的库和表进行复制,如test.test1(test库的test1表);#'rep'@'192.168.1.%' rep为同步账号,192.168.1.%为授权主机,使用了%表示允许整个192.168.1.0网段以rep用户访问;#identified by "123456" , 123456为密码
登陆从库并开启主从同步
shell> mysql -uroot -pmysql> CHANGE MASTER TO 连接主数据库MASTER_HOST="192.168.1.10", 这里是主库的ipMASTER_PORT=3306, 这里是主库的端口,从库的端口可以和主库不同MASTER_USER="rep", 这里是主库上建立的用于复制的用户repMASTER_PASSWORD="123456", 这里是rep的密码MASTER_LOG_FILE="mysql-bin.000003", 这里是show master status时查看到的二进制日志文件名称,注意不能多空格MASTER_LOG_POS=1889; 这里是show master status时查看到的二进制日志偏移量,注意不能多空格。mysql> start slave; 开启从属服务mysql> show slave status; 查看从属服务状态
note:
只有当slave_io_running以及slave_sql_running都是yes的状态时,部署成功
6.主库解锁
mysql>unlock tables;
1.2.5.主从复制的常见问题
question:
slave_io_running为no:
cause:
1).网络有问题,连接不上
2).my.cnf配置文件配置出错
3)由于主从机器复制的一套mysql解压文件,所以在mysql文件夹的data目录下的auto.cnf中的server-uuid相同,报错
solve:
对于原因3可以删除从库的data目录下的auto.cnf文件然后重新运行,执行start slave;(注意删除之前进行备份,以防不测。)
question:
slave_sql_running为no[代表数据库不同步]
cause:
1).程序可能在slave上进行了写操作
2).也可能是slave机器重起后,事务回滚造成的.
solve:
1).重新按照上述的步骤来进行数据库同步
2).
mysql> slave stop;mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;mysql> slave start;
强制性从某一个点开始同步,会有部分没有同步的数据丢失,后续主服务器上删除记录同步也会有一些错误信息,不会影响使用
总结
其实最根本的解决方法是善于利用mysql记录的日志,来详细的分析出错原因。日志的位置在/mycat/data/localhost.err
- 【mysql 主从复制】掌握MySQL主从复制
- mysql 主从复制 主从配置
- MySQL主从复制配置
- mysql主从数据复制
- Mysql 主从复制
- mysql的主从复制
- Mysql搭建主从复制
- MySQL主从复制配置
- Mysql 主从数据库复制
- mysql主从复制
- MySQL主从复制
- mysql主从复制
- 配置MySQL主从复制
- Mysql的主从复制
- MySQL主从复制
- MySQL主从复制功能
- Linux MySQL主从复制
- MYSQL 主从复制(Replication)
- Andriod-NotificationManager
- php信号量子进程编程
- Java:实现单链表的创建
- FTP服务基本搭建
- 61. Rotate List
- mysql主从复制
- 小知识点源码解析-STAGE由最后一个RDD确定并行度的源码解析
- C#文件搜索小程序
- Start
- android使用jre自带工具生成证书
- 《HTML+CSS基础课程》学习笔记二
- Wscript对象详解
- @date2016-3-22(软件工程男的日常)
- Python 入门 之 数据类型