master:10.13.120.236 slave:10.13.120.233 步骤一:安装master 下载mysql-5.1.60-linux-x86_64-glibc23.tar.gz 放到/home/a/soft/下 shell>sudo groupadd mysql shell>sudo useradd -r -g mysql mysql shell>cd /home/a/soft/ shell>tar zxvf mysql-5.1.60-linux-x86_64-glibc23.tar.gz shell>cd /usr/local/ shell>sudo ln -s /home/a/soft/mysql-5.1.60-linux-x86_64-glibc23 mysql shell> cd mysql shell>sudo chown -R mysql . shell>sudo chgrp -R mysql . shell>sudo scripts/mysql_install_db --user=mysql shell>sudo chown -R root . shell>sudo chown -R mysql data # Next command is optional shell>sudo cp support-files/my-medium.cnf /etc/my.cnf shell>sudo bin/mysqld_safe --user=mysql & # Next command is optional shell>sudo cp support-files/mysql.server /etc/init.d/mysql.server #配置my.cnf #################################### binlog-do-db=phpdb binlog-ignore-db=mysql log-bin=/usr/local/mysql/log/updatelog log-slave-updates slave-skip-errors=all ##################################### $sudo service mysql.server start $mysql -uroot -p 改变当前数据库为mysql: mysql>use mysql 设置从本地主机登录的root帐号密码: mysql>set password for root@localhost=password('root'); 删除匿名帐号: mysql>delete from user where user=''; 删除密码为空的帐号: mysql>delete from user where password=''; 删除允许非localhost主机登录的帐号: mysql>delete from user where host<>'localhost'; 执行下面的命令使更改生效: mysql>flush privileges; mysql>update user set host = '%' where user = 'root'; mysql>create database phpdb; mysql>use phpdb; mysql>create table person(id int(10) primary key auto_increment,name varchar(100) not null); #dump主库数据 mysql>flush tables with read lock; $mysqldump -h127.0.0.1 -p3306 -uroot -p phpdb > /mnt/phpdb.sql (/mnt目录是我自己做的NFS,就是方便不同机器间使用文件,不用nfs也可以) mysql> unlock tables; mysql>use mysql mysql>GRANT REPLICATION SLAVE ON *.* TO 'slave1_user'@'10.13.120.233' IDENTIFIED BY 'root'; $sudo service mysql.server restart mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000006 | 2366 | phpdb | mysql | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
步骤二:安装slave 下载mysql-5.1.60-linux-x86_64-glibc23.tar.gz 放到/home/a/soft/下 shell>sudo groupadd mysql shell>sudo useradd -r -g mysql mysql shell>cd /home/a/soft/ shell>tar zxvf mysql-5.1.60-linux-x86_64-glibc23.tar.gz shell>cd /usr/local/ shell>sudo ln -s /home/a/soft/mysql-5.1.60-linux-x86_64-glibc23 mysql shell> cd mysql shell>sudo chown -R mysql . shell>sudo chgrp -R mysql . shell>sudo scripts/mysql_install_db --user=mysql shell>sudo chown -R root . shell>sudo chown -R mysql data # Next command is optional shell>sudo cp support-files/my-medium.cnf /etc/my.cnf shell>sudo bin/mysqld_safe --user=mysql & # Next command is optional shell>sudo cp support-files/mysql.server /etc/init.d/mysql.server #配置my.cnf ##################################################### server-id = 2 #master-host = mysql_master #master-user = slave1_user #master-password = root #master-port = 3306 #master-connect-retry=60 replicate-ignore-db=mysql replicate-do-db=phpdb log-slave-update slave-skip-errors=all ##################################################### $sudo service mysql.server start $mysql -uroot -p 改变当前数据库为mysql: mysql>use mysql 设置从本地主机登录的root帐号密码: mysql>set password for root@localhost=password('root'); 删除匿名帐号: mysql>delete from user where user=''; 删除密码为空的帐号: mysql>delete from user where password=''; 删除允许非localhost主机登录的帐号: mysql>delete from user where host<>'localhost'; 执行下面的命令使更改生效: mysql>flush privileges; mysql>update user set host = '%' where user = 'root'; mysql>create database phpdb; mysql>use phpdb; $mysqldump -h127.0.0.1 -p3306 -uroot -p phpdb < /mnt/phpdb.sql (mysql>source /mnt/phpdb.sql) mysql>change master to master_host='10.13.120.236', mysql>master_user='slave1_user', mysql>master_password='root', mysql>master_port=3306, mysql>master_connect_retry=60, mysql>MASTER_LOG_FILE='mysql-bin.000006', mysql>MASTER_LOG_POS=107; mysql>slave start; mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.13.120.236 Master_User: slave1_user Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000006 Read_Master_Log_Pos: 2366 Relay_Log_File: canggu-OptiPlex-760-relay-bin.000002 Relay_Log_Pos: 2512 Relay_Master_Log_File: mysql-bin.000006 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: phpdb Replicate_Ignore_DB: mysql Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 2366 Relay_Log_Space: 2682 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 1 row in set (0.00 sec) ERROR: No query specified