Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bisakah magento menggunakan beberapa budak MySQL?

Mengingat komentar Anda di atas dan dengan asumsi Anda memiliki pengaturan replikasi yang benar dari Database Anda.

Solusi :-

- Langkah 1:

Dalam File

app/etc/config.xml

Temukan tag penutup "core_read"

<resources>
    ....
    <core_read>
            <connection>
                <use>default_read</use>
            </connection>
        </core_read>
    ....
</resources>

Tambah Setelah tag penutup (sebanyak database yang ingin Anda gunakan) akan terlihat seperti di bawah ini:

<resources>
    ....
        <core_read>
            <connection>
                <use>default_read</use>
            </connection>
        </core_read>
        <slave_db_1>
            <connection>
                <use>slave_one_db</use>
            </connection>
        </slave_db_1>
        <slave_db_2>
            <connection>
                <use>slave_two_db</use>
            </connection>
        </slave_db_2>
    ....
</resources>

- Langkah 2:

Dan Tambahkan koneksi baru di apt/etc/local.xml Anda setelah ( tag penutup "/default_setup> " )

<resources>
    ....            
        <slave_one_db>
            <connection>
                <host><![CDATA[localhost]]></host>
                <username><![CDATA[slave_one_db_user]]></username>
                <password><![CDATA[slave_one_db_password]]></password>
                <dbname><![CDATA[slave_db_one_name]]></dbname>
                <initStatements><![CDATA[SET NAMES utf8]]></initStatements>
                <model><![CDATA[mysql4]]></model>
                <type><![CDATA[pdo_mysql]]></type>
                <pdoType><![CDATA[]]></pdoType>
                <active>1</active>
            </connection>
        </slave_one_db>
        <slave_two_db>
            <connection>
                <host><![CDATA[localhost]]></host>
                <username><![CDATA[slave_tow_db_user]]></username>
                <password><![CDATA[slave_tow_db_password]]></password>
                <dbname><![CDATA[slave_db_one_tow]]></dbname>
                <initStatements><![CDATA[SET NAMES utf8]]></initStatements>
                <model><![CDATA[mysql4]]></model>
                <type><![CDATA[pdo_mysql]]></type>
                <pdoType><![CDATA[]]></pdoType>
                <active>1</active>
            </connection>
        </slave_two_db>
    ....
</resources>

- Langkah 3:

Salin File Dari " app/code/core/Mage/Core/Model/Resource.php " ==TO ==> " app/code/local/Mage/Core/Model/Resource.php "

1- Temukan $_mappedTableNames yang dilindungi;

2- Tambahkan metode ini di bawah ini :

public function getSlaveDb()
{
    $prefix = 'slave_db_'; // prefix for the slaves databased in the xml file
    $cookieExpireTime = 1209600; // 2 weeks Cookie ( database selection ) expire time
    $dbArray = array(1,2); // All slaves Db in-case the cookie has invalid value
    $slaveDb = array_rand( array_flip($dbArray),1 ); // How to alternate between databases ( in this demo i just use 2 database ) adjust the selection of the database to fit hoe many database you want to use !
    if(!isset($_COOKIE['read_db']) || !in_array($_COOKIE['read_db'],$dbArray)) // Check for the cookie values
    {
        setcookie("read_db", $slaveDb, time()+$cookieExpireTime); // set the current database to the user in cookie so next time user use same connection to database ! to avoid jumping or hopping on different databases in short time
    }else{
        $slaveDb = $_COOKIE['read_db']; // return the database selected if the user has it in the cookies
    }
    return $prefix.$slaveDb;
}

3- Ubah metode " fungsi publik getConnection($name) " menjadi seperti di bawah ini :

public function getConnection($name)
{
    if($name =='core_read') // Only applied for READ Connections !!!
    {
        $name = $this->getSlaveDb(); // change the name of the connection to the one we get from our main method
    }
    //....... Leave the rest of the function as it is !!
}

Ini akan memungkinkan Anda untuk menggunakan database sebanyak yang Anda tentukan dalam XML dan PHP CODE untuk koneksi core_read dan koneksi default_setup untuk semua koneksi lain di magento ( core_write, core_setup )

Semoga ini menyelesaikan masalah Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menghubungkan ke Database MySQL atau MariaDB

  2. String karakter UTF8 MySQL tidak valid saat mengimpor tabel csv

  3. Apa arti dari stored procedure yang dikompilasi sebelumnya?

  4. Bagaimana cara memperbaiki kolom MySQL Query Alias ​​​​yang tidak dikenal? 2018

  5. Pekerjaan berulang untuk Laravel json api