centos mysql数据库主从同步

环境:

1.软件:mysql 5.5.19版本  cmake2.8.10.2                                mysql5.5以下的版本不需要cmake

2.两台PC 分别PC1主数据库192.168.4.28

                   PC2从数据库192.168.4.30

目的,实现主数据库创建库或者表等相关数据,从数据库会立刻同步

一、安装mysql

1.mysql数据库安装位置/usr/local/mysql

mysql数据位置/data/mysql

mysql配置文件位置/etc/my.cnf

2.创建mysql用户组 groupadd mysql

3.创建mysql用户    useradd -r -g mysql mysql

4.源码安装cmake

tar -zxvf cmake -C /usr/src

./usr/src/cmake/configure 

make 

make install

5.源码安装mysql

tar -zxvf mysql -C /usr/src

cd /usr/src/mysql/

cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55 

>  -DDEFAULT_CHARSET=gbk 

>  -DDEFAULT_COLLATION=gbk_chinese_ci 

>  -DENABLED_LOCAL_INFILE=ON 

>  -DWITH_INNOBASE_STORAGE_ENGINE=1 

>  -DWITH_FEDERATED_STORAGE_ENGINE=1 

>  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 

>  -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 

>  -DWITHOUT_PARTITION_STORAGE_ENGINE=1 

>  -DWITH_COMMENT="jss edition" 

>  -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock 

>  -DSYSCONFDIR=/data/mysql

6.执行编译

make

7.编译安装

make install

8.首先修改目录安装的所有者,以后后期没有修改权限或内部访问错误

cd /usr/local/mysql55        看清楚路径

chown -R mysql:mysql ./

9.连接安装mysql db库文件

  1. scripts/mysql_install_db --user=mysql  --basedir=/usr/local/mysql --datadir=/usr/local/mysql 
  2. chown -R root .   
  3. chown -R mysql ./data

输出:

Installing MySQL system tables...
OK
Filling help tables...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
./bin/mysqladmin -u root password 'new-password'
./bin/mysqladmin -u root -h rhel5u3 password 'new-password'
Alternatively you can run:
./bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
cd . ; ./bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd ./mysql-test ; perl mysql-test-run.pl
Please report any problems with the ./bin/mysqlbug script!

如果报错 仔细查看命令是否正确

10.复制mysql的配置文件

cp support-files/my-medium.cnf /etc/my.cnf

11.复制mysql的启动脚本

  1. cp support-files/mysql.server /etc/init.d/mysqld  
  2. chmod +x /etc/init.d/mysqld  
  3. chkconfig –add mysqld

12.修改/etc/profile文件为了方便,将mysql 的bin目录加到PATH中

找到export那项,在单出一行添加如下:

export PATH=/usr/local/mysql/bin:$PATH

13.声明系统文件并立刻生效

source /etc/profile

14.打开mysql并设置密码,

service mysql start

mysqladmin -u root password admin@flush.so3

注意刚安装完mysql 无密码所以不需要-p  直接用password 在后面添加你设置的密码

15.同样的,两个pc安装mysql同样方式 同样步骤

二、开始整数据同步啦

首先我们需要准备一个sql脚本或者自己手直接敲进mysql数据库

主库操作:

1.修改/etc/my.cnf

修改server-ID 不能想通

server-id =1 

log-bin = binlog

binlog-d0-db =mydata

binlog-ignore-db=mysql

2.重启mysql数据库

service mysqld restart

3.登陆数据库

mysql -uroot -p

4.赋予一个admin账户对数据库上读取日志

mysql>grant replication slave on * .*to 'admin'@'192.168.4.28' identified by 'admin@flush.so3'

5.锁定数据库主表 同步信息需要

mysql>flush tables with read lock;

6.显示主库信息

show master status;

centos mysql数据库主从同步

7.mydata数据库表信息bin相关的文件信息,给dump下来(并不是把里面的数据给备份出来)

mysqldump --master -data -u root -p mydata > mydata.sql

8.设置从库

1.首先两个pc库内容是一致的 ,我们要做的就是把mydata.sql这个表信息给导入进去

2.修改/etc/my.cnf

server-id =2 

log-bin = binlog

binlog-d0-db =mydata

binlog-ignore-db=mysql

3.把之前主库上导出来的mydata.sql导入进去,注意(并不是覆盖,而是把里面的数据表面信息给内置进去)

看图:剖析我们导出的信息表内容:

centos mysql数据库主从同步

里面没有任何关于创建表 或者覆盖之类的信息吧?全是一些key check 还有时间 及masterlog相关的,白色字体那样 就是上面那个图把里面的信息嵌入里面,

那么我们对从库导入进去的话,就是把这层信息给镶嵌上去,自然再后面的时候IO_runing就会yes了

导入命令:

mysql -u root -p mydata </root/mydata.sql

重启从数据库

service mysqld restart

4.进入数据库开始设置同步

首先mysql>slave stop;停止同步

mysql>change master to master_host = '192.168.4.28',master_user= 'admin',master_password = 'admin@flush.so3',master_log_file = 'mysql-bin-000010',master_log_pos = 107;设置master host user password bin-log pos-log   等这些

mysql>slave start;开启同步

5.查看同步状态

mysql>show salve statusG;

centos mysql数据库主从同步

如果 Slave_IO_Running: NO 你要考虑 网络是否正常 防火墙 selinux ,数据库表信息 就之前上面的那图介绍剖析和你本身的库文件

还要匹配你的bin-log是否正常 是否为锁定状态

如果Slave_SQL_Running: NO

需要考虑你的数据结构是否正常 是否一致

7.测试我们在主数据库上创建一个库文件,那么从数据库不就会立刻更新,根据数据大小 网络 来决定同步时间

图就不上传了如果是两个yes 就可以测试通过。