数据库安装,主从同步步骤
安装步骤
 
password密码123456是用来测试的,根据真实环境可以随时修改
groupadd mysql
useradd -r -g mysql mysql
tar zxvf mysql-5.1.57-linux-x86_64-glibc23.tar.gz
mv mysql-5.1.57-linux-x86_64-glibc23 /usr/local/mysql
cd /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
cp support-files/my-medium.cnf /etc/my.cnf
./scripts/mysql_install_db --user=mysql
/usr/local/mysql/bin/mysqld_safe  --user=mysql &
 ./bin/mysqladmin -u root password 123456
echo "/usr/local/mysql/bin/mysqld_safe  --user=mysql &" >>/etc/rc.local
echo  "export PATH=$PATH:/usr/local/mysql/bin"   >>/etc/profile
source /etc/profile
cp support-files/mysql.server /etc/init.d/mysqld 
service mysqld restart
chkconfig --level 345 mysqld on
 
两台服务器:
192.168.1.2:主
192.168.1.3:从
主服务器:
 vi /etc/my.cnf
server-id=10
mysqladmin -p123456 shutdown
mysqld_safe --user=mysql &
mysql -uroot -p123456
进入数据库,创建同步使用的账号密码
创建用户
>grant replication slave on *.* to identified by 'backup';
查看表状态
查询主数据库状态,并记下FILE及Position的值,这个在后面配置从服务器的时候要用到。
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 |      259 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
从服务器
修改my.cnf,注意主从ID不能一样,否则会报错  Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
vi /etc/my.cnf
server-id=11
重启服务
mysqladmin -p123456 shutdown
mysqld_safe --user=mysql &
登录mysql,执行如下语句
mysql -uroot –p123456
mysql> change master to master_host='192.168.1.2',master_user='backup',master_password='backup',master_log_file='mysql-bin.000006',master_log_pos=259;
注:
master_log_file='mysql-bin.000006',
master_log_pos=259;
和上面用show master status; 查看到的数据一致就可以
启动slave同步。
mysql> start slave;
检查主从同步,如果看到Slave_IO_Running和Slave_SQL_Running均为Yes,则主从复制连接正常。
mysql> show slave status\G;
验证: 
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
验证配置是否正常,mysql主从能否正常复制。
在主数据库上创建一个表格测试是否同步
mysql> create database mysqltest;
mysql> use mysqltest;
mysql> create table user(id int(5),name char(10));
mysql> insert into user values (00001,'zhangsan');
________________
为了更好的进行测试,不使用mysql,test类的表格名称:新建表格
mysql> create database member;
mysql> use member;
mysql> create table user(id int(5),name char(10));
mysql> insert into user values (00002,'good');
在从数据库中验证一下,是否正常复制到数据。
[root@localhost ~]# mysql -uroot –p123456
mysql> show databases;
mysql> select * from mysqltest.user;
mysql> select * from member.user;
附:同步关闭语句:
mysql> slave stop;
————————————————————————————
若主数据库表某表tools不想进行同步
vi /etc/my.cnf
添加:binlog-ignore-db =tools
位置:binlog_format=mixed下面。
重启主服务器服务即可
检查主库:
 >show master status;          
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000008 |      193 |              | tools            |
+------------------+----------+--------------+------------------+
会发现binlog_ignore里面多了tools。然后进入从库会发现没有这个表
 
如何监控主从是否同步正常(脚本直接采用公司搭档写的shell命令:)
监控软件:nagios
位置:/usr/local/nagios/libexec
在从库上建立脚本命名为check_mysql_slave:
#!/bin/sh
declare -a    slave_is
slave_is=($(/usr/local/mysql/bin/mysql -uroot -pYOURPASSWORD  -e "show slave status\G"|grep Running |awk '{print $2}'))
if [ "${slave_is[0]}" = "Yes" -a "${slave_is[1]}" = "Yes" ]
     then
     echo "OK -slave is running"
     exit 0
else
     echo "Critical -slave is error"
     exit 2
fi
 
YOURPASSWORD是你现用数据库所使用的密码