Mysql数据库实现主从同步,看这一篇就够了( 四 )

5.相关文件
  -存放在从库数据库目录下
master.info                  //主库信息relay-log.info               //中继日志信息主机名-relay-bin.xxxx         //中继日志主机名-relay-bin.index       //索引文件查看从库服务器数据库目录下配置从库时生成的4种文件
[root@test2 ~]# ls /var/lib/mysql...test2-relay-bin.index   master.info    relay-log.info      test2-relay-bin.000001  test2-relay-bin.000002验证主从同步效果主数据库操作:
 在主数据库服务器中创建一个新表test并赋值,再去从服务器上查看数据是否同步 。
[root@localhost ~]# mysql -uroot -p123qqq...Amysql: [Warning] Using a password on the comm...mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || db1                || mysql              || performance_schema || sys                || test               || zabbix             |+--------------------+mysql> use test;mysql> show tables;+----------------+| Tables_in_test |+----------------+| money          |+----------------+mysql> create table test(name varchar(25),city varchar(30),age int);mysql> show tables;+----------------+| Tables_in_test |+----------------+| money          || test           |+----------------+mysql> insert into test.test values("mysql","china",11);mysql> select * from test.test;+-------+-------+------+| name  | city  | age  |+-------+-------+------+| mysql | china |   11 |+-------+-------+------+从数据库操作:
 查看主服务器上新增的数据是否已经同步到从服务器上 。
[root@test2 ~]# mysql -uroot -p123qqq...A...mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || db1                || mysql              || performance_schema || sys                || test               || zabbix             |+--------------------+mysql> use test;mysql> show tables;+----------------+| Tables_in_test |+----------------+| money          || test           |+----------------+mysql> select * from test.test;+-------+-------+------+| name  | city  | age  |+-------+-------+------+| mysql | china |   11 |+-------+-------+------+ 可以看到我们在主数据库服务器上新增的数据已经成功同步到从服务器上了 。
延伸:MySql主从同步的延迟问题(如何产生):
 主库针对写操作,顺序写binlog日志,从库单线程去主库顺序读”写操作的binlog”,从库取到binlog在本地原样执行(随机写),来保证主从数据逻辑上一致 。mysql的主从复制都是单线程的操作,主库对所有增、删、改产生binlog日志,binlog是顺序写,所以效率很高,slave的Slave_IO_Running线程到主库取日志,效率比较高,下一步,问题来了,slave的Slave_SQL_Running线程将主库的增、删、改操作在slave实施 。增、删、改的IO操作是随机的,不是顺序的,成本高很多,还可能与slave上的其他查询操作产生lock争用,由于Slave_SQL_Running也是单线程的,所以一个增、删、改操作卡住了,需要执行10分钟,那么所有之后的增、删、改操作会等待这个增、删、改操作执行完才会继续执行,这就导致了延时 。(主库是多进程,从库单进程(回放relaylog),所以在高并发时,会出现延迟 。)


推荐阅读