网站建设公司活动,人和做网站,最近时事热点,怎么查询网站的点击量1.复制概述Mysql内建的复制功能是构建大型#xff0c;高性能应用程序的基础。将Mysql的数据分布到多个系统上去#xff0c;这种分布的机制#xff0c;是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上#xff0c;并重新执行一遍来实现的。复制过程中一个服务器充当…1.复制概述Mysql内建的复制功能是构建大型高性能应用程序的基础。将Mysql的数据分布到多个系统上去这种分布的机制是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上并重新执行一遍来实现的。复制过程中一个服务器充当主服务器而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新然后封锁并等待主服务器通知新的更新。请注意当你进行复制时所有对复制中的表的更新必须在主服务器上进行。否则你必须要小心以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。1.1 mysql支持的复制类型 (1)基于语句的复制在主服务器上执行的SQL语句在从服务器上执行同样的语句。MySQL默认采用基于语句的复制效率比较高。一旦发现没法精确复制时会自动选着基于行的复制。 (2)基于行的复制把改变的内容复制过去而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持 (3)混合类型的复制: 默认采用基于语句的复制一旦发现基于语句的无法精确的复制时就会采用基于行的复制。1.2 复制解决的问题MySQL复制技术有以下一些特点(1) 数据分布 (Data distribution )(2) 负载平衡(load balancing)(3) 备份(Backups) (4) 高可用性和容错行 High availability and failover1.3 复制如何工作整体上来说复制有3个步骤(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件binary log events)(2) slave将master的binary log events拷贝到它的中继日志(relay log)(3) slave重做中继日志中的事件将改变反映它自己的数据。 2 .复制配置有两台MySQL数据库服务器Master和slaveMaster为主服务器slave为从服务器初始状态时Master和slave中的数据信息相同当Master中的数据发生变化时slave也跟着发生相应的变化使得master和slave的数据信息同步达到备份的目的。要点负责在主、从服务器传输各种修改动作的媒介是主服务器的二进制变更日志这个日志记载着需要传输给从服务器的各种修改动作。因此主服务器必须激活二进制日志功能。从服务器必须具备足以让它连接主服务器并请求主服务器把二进制变更日志传输给它的权限。 一、安装MySQL说明在两台MySQL服务器192.168.21.169和192.168.21.168上分别进行如下操作安装MySQL 5.5.22 二、配置MySQL主服务器(192.168.21.169)mysql -u root -p #进入MySQL控制台create database AMT_DB; #建立数据库AMT_DBinsert into mysql.user(Host,User,Password) values (localhost,archermind,password(123456)); #创建用户archermind,建立MySQL主从数据库同步用户replication密码123456 flush privileges; #刷新系统授权表#授权用户replication只能从192.168.21.168这个IP访问主服务器192.168.21.169上面的数据库并且只具有数据库备份的权限grant replication slave on *.* to replication192.168.21.168 identified by 123456 with grant option;复制代码 三、把MySQL主服务器192.168.21.169中的数据库AMT_DB导入到MySQL从服务器192.168.21.168中1、导出数据库AMT_DBmysqldump -u root -p AMT_DB /home/replication.sql #在MySQL主服务器进行操作导出数据库AMT_DB到/home/replication.sql复制代码备注在导出之前可以先进入MySQL控制台执行下面命令flush tables with read lock; #数据库只读锁定命令防止导出数据库的时候有数据写入unlock tables; #解除锁定复制代码2、导入数据库到MySQL从服务器mysql -u root -p #进入从服务器MySQL控制台create database AMT_DB; #创建数据库use AMT_DB #进入数据库source /home/replication.sql #导入备份文件到数据库mysql -u replication -h 192.168.21.169 -p #测试在从服务器上登录到主服务器复制代码四、配置MySQL主服务器的my.cnf文件#vim /etc/my.cnf #编辑配置文件在[mysqld]部分添加下面内容 server-id1 #设置服务器id为1表示主服务器注意如果原来的配置文件中已经有这一行就不用再添加了。 log_binmysql-bin #启动MySQ二进制日志系统注意如果原来的配置文件中已经有这一行就不用再添加了。 binlog-do-dbAMT_DB #需要同步的数据库名如果有多个数据库可重复此参数每个数据库一行 binlog-ignore-dbmysql #不同步mysql系统数据库#service mysqld restart #重启MySQL复制代码mysql -u root -p #进入mysql控制台show master status; 查看主服务器出现以下类似信息------------------------------------------------------------|File |Position | Binlog_Do_DB | Binlog_Ignore_DB |------------------------------------------------------------| mysql-bin.000001 | 7131 | AMT_DB |mysql |------------------------------------------------------------1 row in set (0.00 sec)复制代码注意这里记住File的值mysql-bin.000001和Position的值7131后面会用到。五、配置MySQL从服务器的my.cnf文件#vim /etc/my.cnf #编辑配置文件在[mysqld]部分添加下面内容server-id2 #配置文件中已经有一行server-id1修改其值为2表示为从数据库log-binmysql-bin #启动MySQ二进制日志系统注意如果原来的配置文件中已经有这一行就不用再添加了。replicate-do-dbAMT_DB #需要同步的数据库名如果有多个数据库可重复此参数每个数据库一行replicate-ignore-dbmysql #不同步mysql系统数据库:wq! #保存退出#service mysqld restart #重启MySQL复制代码注意MySQL 5.1.7版本之后已经不支持把master配置属性写入my.cnf配置文件中了只需要把同步的数据库和要忽略的数据库写入即可。mysql -u root -p #进入MySQL控制台slave stop; #停止slave同步进程change master to master_host192.168.21.169,master_userreplication,master_password123456,master_log_filemysql-bin.000001 ,master_log_pos7131; #执行同步语句slave start; #开启slave同步进程SHOW SLAVE STATUSG #查看slave同步信息出现以下内容*************************** 1. row *************************** Slave_IO_State:Waiting for master to send event Master_Host:192.168.21.169 Master_User:replication Master_Port:3306 Connect_Retry:60 Master_Log_File:mysql-bin.000001 Read_Master_Log_Pos:7131 Relay_Log_File:MySQLSlave-relay-bin.000001 Relay_Log_Pos:253 Relay_Master_Log_File:mysql-bin.000001 Slave_IO_Running:Yes Slave_SQL_Running:Yes Replicate_Do_DB:AMT_DB Replicate_Ignore_DB:mysql Replicate_Do_Table: Replicate_Ignore_Table:1 row in set (0.00 sec)复制代码注意查看Slave_IO_Running: YesSlave_SQL_Running: Yes以上这两个参数的值为Yes即说明配置成功六、测试MySQL主从服务器双机热备是否成功1、进入MySQL主服务器mysql -u root-p #进入主服务器MySQL控制台use AMT_DB #进入数据库CREATETABLE test ( id int not null primary key,name char(20)); #创建test复制代码2、进入MySQL从服务器mysql -u root-p #进入MySQL控制台use AMT_DB #进入数据库show tables; #查看AMT_DB表结构会看到有一个新建的表test表示数据库同步成功复制代码至此MySQL数据库配置主从服务器实现双机热备