请教mysql主从同步方式是否支持视图
请教mysql主从同步方式是否支持视图
--主机开两个窗口,一个进入mysql,一个是shell--主机阻断写操作mysql>FLUSHTABLESWITHREADLOCK;QueryOK,0rowsaffected(0.00sec)mysql>mysql>mysql>SHOWMASTERSTATUS;+------------------+----------+--------------+------------------+|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|+------------------+----------+--------------+------------------+|mysql-bin.000002|1529881|openser|mysql,test|+------------------+----------+--------------+------------------+1rowinset(0.00sec)--另外一个窗口导出主机数据库mysqldump-uroot-p123456--opt-Ropenser>openser20121203.sql--刚才的窗口主机解锁mysql>UNLOCKTABLES;QueryOK,0rowsaffected(0.00sec)mysql>--打包数据文件到从机dropdatabaseopenser;createdatabaseopenser;mysql-uroot-p123456openser
如何设置mysql主从同步时间间隔 linux
linux下配置mysql主从同步的步骤master操作系统:rhel6.0IP:172.16.0.100MySQL版本:5.1.47www.2cto.comslave操作系统:rhel6.0IP:172.16.0.200MySQL版本:5.1.47分别登录master机和slave机的mysql:mysql –u root –p创建数据库:create database repl;三、master机和slave机的相关配置1、修改master机器中mysql配置文件my.cnf,该文件在/etc目录下在[mysqld]配置段添加如下字段server-id=1log-bin=mysql-binbinlog-do-db=repl //需要同步的数据库,如果没有本行,即表示同步所有的数据库binlog-ignore-db=mysql //被忽略的数据库在master机上为slave机添加一同步帐号grant replication slave on *.* to 'replication'@'172.16.0.200' identified by '123456';重启master机的mysql服务:service mysqld restart用show master status 命令看日志情况mysql>show master status;+-----------------+------------+-------------------+-----------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-----------------+------------+-------------------+-----------------------+| log.000003 | 98 | repl | mysql |+-----------------+------------+-------------------+-----------------------+1 row in set (0.00 sec)2、修改slave机中mysql配置文件同样在[mysqld]字段下添加如下内容server-id=2www.2cto.commaster-host=172.16.0.100master-user=replmaster-password=123456master-port=3306master-connect-retry=60replicate-do-db=repl //同步的数据库,不写本行 表示 同步所有数据库然后重启slave机的mysql在slave机中进入mysqlmysql>start slave;mysql>show slave status\G;如果Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功。这时 再执行show slave status\G*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.1.222Master_User: replMaster_Port: 3306Connect_Retry: 60Master_Log_File: log.000003Read_Master_Log_Pos: 98Relay_Log_File: mysqld-relay-bin.000002Relay_Log_Pos: 229Relay_Master_Log_File: log.000003Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_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: 98Relay_Log_Space: 229Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 01 row in set (0.00 sec)www.2cto.comSlave_IO_Running: YesSlave_SQL_Running: Yes信息中如上两行都为Yes,说明配置成功。五、测试主从服务器是否能同步在主服务器上面新建一个表,必须在repl数据下mysql> use replDatabase changedmysql> create table test(id int,name char(10));Query OK, 0 rows affected (0.00 sec)mysql> insert into test values(1,'zaq');Query OK, 1 row affected (0.00 sec)mysql> insert into test values(1,'xsw');Query OK, 1 row affected (0.00 sec)mysql> select * from test;+------+------+| id | name |+-------+------+| 1 | zaq || 1 | xsw |+-------+------+2 rows in set (0.00 sec)在从服务器查看是否同步过来mysql> use repl;Database changedmysql> select * from test;+------+------+| id | name |+------+------+| 1 | zaq || 1 | xsw |+------+------+2 rows in set (0.00 sec)说明已经配置成功。1. 当在执行start slave这条命令时,系统提示ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO,执行show slave status;又提示Empty set (0.00 sec)原因:slave已经默认开启,要先关闭再开启执行 slave stop;change master to master_host='172.16.0.200',master_user='repl',master_password='123456', master_log_file='log.000003' ,master_log_pos=98;2、出现错误提示 :Slave_IO_Running:NOmysql的error日志中信息:www.2cto.comSlave I/O: error connecting to master 'replication@172.16.0.100:3306' - retry-time: 60 retries: 86400, Error_code: 10451.在主mysql中创建slave远程连接访问时候的登录密码一定要设置对。2.停止slave上的mysqld服务,从服务器上删除掉所有的二进制日志文件,包括一个数据目录下的master.info文件和hostname-relay-bin开头的文件,然后启动slave上的mysqld服务。master.info::记录了Mysql主服务器上的日志文件和记录位置、连接的密码。3.slave上Slave_SQL_Running: No ,提示某个表定义不正确清空drop掉master和slave上的已经存在所有表,然后从master库上导入新的数据即可。使用master_delay选项可以控制延迟,使用change master to可以设定延迟多少秒,mysql复制默认延迟是0秒。
求讲一下mysql的主从同步,和互为主从
主从同步首先设置mysql日志模式为binlog模式,在这种模式下对数据库的所有操作都会在bin文件中生产对应的操作sql语句,这时候备机就可以通过读取bin中的sql语句到本地来执行,如此就能实现备机和主机的数据库同步。
互为主从也是一样的道理。不是,mysql主从同步会同步主库的更改操作。包括数据的增删改查,也有表结构的变更,例如字段类型更改,字段添加删除等。
如果设置主从同步的时候设置的全库,那么增加一个表也会同步。
mysql的主从复制通过什么方式完成数据同步
要实现MySQL 的 Replication ,首先必须打开 Master 端的 Binary Log,因为整个复制过程实际上就是 Slave 从 Master 端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。
看上去MySQL的Replication原理非常简单,总结一下:
* 每个从仅可以设置一个主。
* 主在执行sql之后,记录二进制log文件(bin-log)。
* 从连接主,并从主获取binlog,存于本地relay-log,并从上次记住的位置起执行sql,一旦遇到错误则停止同步。mysql的主从复制开启之后,从数据库会立马复制主数据库中的数据。
然后,对主数据库进行增,删,改操作之后,从数据库也会进行相同的操作。
不过,对从数据库进行增,删,改操作的话,对主数据库是没有任何影响的