MySQL支持的复制类型:

1) 基于语句的复制。在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高;

2) 基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍;

3) 混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制;

MySQL主从复制的原理:

1) 在Master中每个事物更新数据完成之后,写入二进制日志中;

2) slave的I/O线程监控Master的二进制日志,一旦日志发生变化,就将变化的部分读取并写入到slave的中继日志中去;

3) slave中的SQL线程监控中继日志,一旦发生变化读取变化的内容,之后重放(重新执行一遍SQL语句),实现mysql数据的同步。

主MySQL服务器(master)------从MySQL服务器(slave)

配置

mount /dev/cdrom /mnt/ //挂载光盘使用yum

1、安装yum,把需要的安装包放在服务器里面,yum会自动安装依赖关系

[root@bogon ~]# rm -rf /etc/yum.repos.d/*[root@bogon ~]# vim /etc/yum.repos.d/yum.repo

[yum]

name=yum installbaseurl=file:///mnt/

enabled=1gpgcheck=0

2、安装mysql服务器

#!/bin/bash

#安装Mysql服务

#初始化当前所处的路径

pwd_dir=`pwd`

#######################[初始化变量]#######################

#mysql源码包的名称

mysql_package_name='mysql-5.5.22.tar.gz'#cmake源码包的名称

cmake_package_name='cmake-2.8.6.tar.gz'#mysql安装路径

mysql_install='/usr/local/mysql'#mysql解压出源码包目录的名称

mysql_package_dir='mysql-5.5.22'#cmake解压出源码包目录的名称

cmake_pachage_dir='cmake-2.8.6'#源码包解压存放路径

code_package_dir='/usr/src/'#依赖包的文件名称

subjoin_package_file='ncurses-devel-5.7-3.20090208.el6.x86_64.rpm'###########################[END]############################

#卸载rpm方式的安装的mysql服务

rpm-e mysql-server --nodeps &> /dev/null#检查依赖包

rpm-q ncurses-devel &> /dev/null

if [ $? -ne 0]thenrpm-ih $subjoin_package_fiel --nodepsfi#编译安装cmaketar zxvf $cmake_package_name -C $code_package_dir &> /dev/nullcd $code_package_dir$cmake_pachage_dir

./configure &> /dev/nullgmake&> /dev/nullgmakeinstall &> /dev/nullcd $pwd_dir

#编译安装msyqltar zxf $mysql_package_name -C $code_package_dir &> /dev/nullcd $code_package_dir$mysql_package_dir

cmake-DCMAKE_INSTALL_PREFIX=$mysql_install -DSYSCONFDIR=/etc/ -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWHIT_CHARSETS=all &> /dev/null

make &> /dev/null

make install &> /dev/null#配置msyql

userdel mysql&> /dev/nulluseradd-M -s /sbin/nologin mysql &> /dev/null

chown -R mysql:mysql $mysql_install &> /dev/null

cp -f ${mysql_install}/support-files/my-medium.cnf /etc/my.cnfln -s ${mysql_install}/bin/*/usr/local/bin/

cp ${mysql_install}/support-files/mysql.server /etc/rc.d/init.d/mysqld

chkconfig --add mysqld

chkconfig mysqld on

#初始化mysql

$mysql_install/scripts/mysql_install_db --user=mysql --basedir=$mysql_install --datadir=${mysql_install}/data/ &> /dev/null

service mysqld start &> /dev/null

echo 'mysql install successful'

MySQL脚本

3、配置主要的MySQL服务器(master)

修改mysql的配置文件

[root@bogon ~]# vim /etc/my.cnf

......//省略部分配置内容

# Replication Master Server (default)

# binary logging is requiredforreplication

log-bin=master-bin //修改

server-id = 1 //主服务器,数字越小等级越高

log-slave-updates=true //修改

[root@bogon ~]# service mysqld restart //重启服务

主服务器登录MySQL给从服务器同步的权限

[root@bogon ~]# mysql -u root -p

mysql> grant replication slave on *.* to 'myslave'@'192.168.1.%' identified by '123.com';mysql> flush privileges; //强制刷新

mysql> show master status;

+-------------------+----------+--------------+------------------+

| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+-------------------+----------+--------------+------------------+

| master-bin.000001 |      338 |              |                  |

+-------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

其中File列显示日志名,Position列显示偏移量,这两个值在后面配置从服务器的时候需要。

Slave应从该点在Master上进行新的更新

配置mysql从服务器(slave)

server-id = 2 //修改,要低于主mysql,更不能一样relay-log=relay-log-bin //添加

relay-log-index=slave-relay-bin.index //添加

[root@bogon ~]# service mysqld restart //重启服务

登录MySQL,配置同步

按主服务器的file信息和Position位置号更改下面命令中的master_log_file和master_log_pos参数;

[root@bogon ~]# mysql -u root -p

mysql> change master to master_host='192.168.1.9',

master_user='myslave',master_password='123.com',

master_log_file='master-bin.000001',

master_log_pos=338;

mysql> start slave; //开始实时同步

mysql>show slave status\G; //查看同步的状态信息*************************** 1. row ***************************Slave_IO_State: Connecting to master

Master_Host:192.168.1.9Master_User: myslave

Master_Port:3306Connect_Retry:60Master_Log_File: master-bin.000001Read_Master_Log_Pos:338Relay_Log_File: relay-log-bin.000001Relay_Log_Pos:4Relay_Master_Log_File: master-bin.000001Slave_IO_Running: Connecting

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno:0Last_Error:

Skip_Counter:0Exec_Master_Log_Pos:338Relay_Log_Space:107Until_Condition: None

Until_Log_File:

Until_Log_Pos:0Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: NULL

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno:2003Last_IO_Error: error connecting to master'myslave@192.168.1.9:3306' - retry-time: 60 retries: 86400Last_SQL_Errno:0Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id:0

验证

在主服务器上创建一个库,然后在从服务器上刷,就可以看到我们所创建的库

master-bin.000001 是一个二进制的文件,里面存放的是我们创建库写入的sql语句

我们可以用mysqlbinlog命令可以查看mysql的二进制日志文件,后面跟路径

linux mysql依赖关系_[Linux]-MySQL主从复制相关推荐

  1. ubuntu安装mysql依赖关系_ubuntu 安装mysql问题

    sudo apt-get install mysql-server 错误信息: Renaming removed key_buffer and myisam-recover options (if p ...

  2. mysql 好友关系_【mysql】关系型数据库中好友关系实现的最佳方案是什么?

    社交类应用中,每用户与多个好友存在好友关系,设计的最佳方案是什么的呢?数据库白痴求助. 我目前想到的表设计是这样的: CREATE TABLE friend_list ( id INT PRIMARY ...

  3. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

    MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...

  4. linux与mysql的关系_linux系统mysql简介

    linux系统mysql初始 初级:1.mysql安装 中级:数据库管理员DBA 1) 用户管理 1.用户权限的管理 2.管理可以操作库和表 3.用户名 4.管理来源IP 5.用户的密码 grant ...

  5. mysql 关闭主从_取消mysql主从复制关系

    mysql主从复制中,需要将主从复制关系清除,需要取消其从库角色.这可通过执行RESET SLAVE ALL清除从库的同步复制信息.包括连接信息和二进制文件名.位置.从库上执行这个命令后,使用show ...

  6. python与linux关系_如何处理Linux / Python依赖关系?

    由于缺乏对我想使用的一些库的支持,我将一些 Python开发从Windows转移到Linux开发.我已经花了大部分时间搞乱了依赖关系. 问题 每当我拿起Linux,我通常会遇到一些依赖问题,通常是开发 ...

  7. ubuntu qt编译mysql报错_[Linux]QT编译Mysql驱动(Mariadb驱动),解决qmake报错问题

    编译环境 系统:Ubuntu18.04 QT版本:Qt 5.14.0 gcc版本:gcc version 7.5.0 qt官方编译驱动方式 在使用QT连接数据库时遇见的第一个错误就是QMYSQL dr ...

  8. mysql数据依赖关系_发现数据库对象的依赖关系

    SQL Server Management Studio中有一个很有意思的工具,可以查看某个对象的依赖和被依赖关系.如下图所示 假设,我们自己的程序也要实现这样的功能,那么该怎么做呢? 1. 首先,创 ...

  9. linux与python什么关系,如何处理Linux / Python依赖关系?

    由于缺乏对我想使用的一些库的支持,我将一些 Python开发从Windows转移到Linux开发.我已经花了大部分时间搞乱了依赖关系. 问题 每当我拿起Linux,我通常会遇到一些依赖问题,通常是开发 ...

最新文章

  1. live555学习笔记2-基础类
  2. Node.js学习笔记(一)
  3. Mac安装PhoneGap3
  4. 部署awstats分析系统
  5. angr学习笔记(8)(文件内容符号化)
  6. Nacos 2.0 性能提升十倍,贡献者 80% 以上来自阿里之外
  7. HashMap 散列初体验
  8. Xcode的Architectures和Valid Architectures的区别
  9. 动态设置html字号,动态设置html的font-size值 (适配文字大小)
  10. 【操作系统】Semaphore处理生产者-消费者问题
  11. 大量删除的表、查询卡顿的表,重建索引
  12. 董明珠的“接班人”出现了?22岁董明珠女秘书火了!本人回应...
  13. VS2008中VC 项目 文件目录的管理
  14. TCP三次挥手四次握手
  15. OpenMP 并行程序设计入门
  16. Caffe + Ubuntu 14.04 64bit + CUDA6.5 + 无GPU 配置
  17. (日常搬砖)voc等xml格式的数据集转换为yolo可用的txt格式的数据集(亲测可用)
  18. 哔哩哔哩APP导出缓存视频并合并成MP4
  19. 球面坐标系转换为笛卡尔坐标系
  20. 【周六福利来了~】优才安卓公开课:程序员到架构师之路

热门文章

  1. defunct 进程占用端口_UAV心跳机制与容器、进程数据采集
  2. linux单次任务调度,go任务调度2(linux的cron调用)
  3. rabbitmq多个消费者监听一个队列_RabbitMQ的六种工作模式
  4. 气象背景场_“把脉”风雨 服务为民——甘肃研究型气象预报业务体系发展扫描...
  5. 新版kali安装beef-xss一大堆报错解决办法
  6. java中单例设计模式登记式单例类_java23种设计模式-创建型模式之单例模式
  7. java 打开sql数据库_idea 使用Java连接SQL Server数据库教程
  8. 机器人 蓝buff 钩_lol:机器人史诗级加强,从河道钩蓝buff,对面打野要骂人
  9. odciexttableopen 调用出错 error open log_如何在 Spring 异步调用中传递上下文
  10. php asp.net des,转DES的dotNet到php实现