一、主从复制原理


1.slave上面的IO线程连接上master的IO线程,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容
2.Master接收到来自slave的IO线程的请求后,根据请求信息读取指定日志指定位置之后的日志信息,返回给slave端的IO线程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息的master端的binary log文件的名称以及pos位置
3.Slave的IO线程接收到信息后,将接收到的binlog内容依次写入到slave端的relaylog文件的最末端,并将读取到的master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次的读取
4.Slave的sql线程检测到relaylog中新增加的内容后,会解析该log文件中的内容并在自身执行这些query

二、安装Mysql

1. 获取安装包

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz

2. 解压

tar fx mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/mysql-5.7.12-linux-glibc2.5-x86_64/ /usr/local/mysql

3. 创建用户

useradd mysql -s /sbin/nologin -M

4. 创建数据目录

mkdir -p /data/mysql/data
chown -R mysql.mysql /data/mysql

5. 修改配置文件

vim /etc/my.cnf

[mysqld]basedir = /usr/local/mysqldatadir = /data/mysql/dataport = 3306key_buffer_size = 400Mmax_allowed_packet = 1024Mtable_open_cache = 64sort_buffer_size = 6Mnet_buffer_length = 8Kread_buffer_size = 8Mread_rnd_buffer_size = 512Kmyisam_sort_buffer_size = 64Mmax_connections = 16384wait_timeout = 20000interactive_timeout = 20000innodb_log_file_size=640Mlower_case_table_names = 1sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES character_set_server=utf8collation-server = utf8_general_ciuser=mysqlexplicit_defaults_for_timestamp=true[client]default-character-set=utf8[mysqld_safe]log-error=//data/mysql/mysqld.logpid-file=/data/mysql/mysqld.pid[slowlog]long_query_time=1slow_query_log=1slow_query_log_file=/data/mysqld/slow.loglog-queries-not-using-indexes=1

6. 初始化数据库

/usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/data/mysql/data

7. 启动服务

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start

三、mysql主从配置

1. 主库配置修改

vim /etc/my.cnf

server-id=1log-bin=mysql-bin#需要同步库,不写为同步所有binlog-do-db=mydb#不同步的库binlog-ignore-db=mysql

2. 重启服务

/etc/init.d/mysqld restart

3. 创建同步账号

grant replication slave on . to 'rep'@'slaveip' identified by "reppassword";
flush privileges;

4. 查看主库状态

show master status;

5. 从库配置修改

vi /etc/my.cnf

server-id=2relay-log=relay-log-binrelay-log-index=slave-relay-bin.index

6. 连接主库

stop slave;
change master to master_host='mysqlip',master_user='rep',master_password='reppasword',master_log_file='mysql-bin.000001',master_log_pos=154;
start slave;

7. 查看从库状态

show slave status\G

©著作权归作者所有:来自51CTO博客作者hxgd2014的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 常用的Linux命令片段
  2. Linux运维入门教程06-03 (硬盘分区、格式化及文件系统的管理一)
  3. 记一次线程池引发的故障 排查下来是三歪的锅
  4. Java 将XML转为Excel方法介绍
  5. 苹果Mac不能复制拷贝文件到U盘如何解决?
  6. curl使用:HTTP请求、下载文件、FTP上传下载
  7. Linux之文件元数据与链接
  8. Linux之文件目录作用
  9. 程序员专享绿色独角兽Gunicorn,了解下

随机推荐

  1. Android bt hid(bluedroid)和linux HID-sub
  2. Android存储权限
  3. 用PC应用程序通过USB读写Andriod里面的数
  4. Android 控件之DatePicker,TimePicker,Ca
  5. 解决Could not find method android() fo
  6. Android禁止横屏竖屏切换
  7. 改变android程序head样式
  8. android的Notification折叠
  9. [ZZ]Android UI Automated Testing
  10. Android初小试---一分钟傻瓜式打包